diff --git a/apps/provisioning_api/lib/Controller/UsersController.php b/apps/provisioning_api/lib/Controller/UsersController.php index 839ac404c947b..9f208b501b2e0 100644 --- a/apps/provisioning_api/lib/Controller/UsersController.php +++ b/apps/provisioning_api/lib/Controller/UsersController.php @@ -4,6 +4,7 @@ /** * @copyright Copyright (c) 2016, ownCloud, Inc. + * @copyright Copyright (c) 2022 Informatyka Boguslawski sp. z o.o. sp.k., http://www.ib.pl/ * * @author Arthur Schiwon * @author Bjoern Schiessle @@ -606,7 +607,11 @@ public function getEditableFieldsForUser(string $userId): DataResponse { $permittedFields[] = IAccountManager::PROPERTY_EMAIL; } - $permittedFields[] = IAccountManager::COLLECTION_EMAIL; + // Editing additional e-mail addresses if enabled. + if ($this->config->getSystemValue('allow_to_change_additional_emails', true) !== false) { + $permittedFields[] = IAccountManager::COLLECTION_EMAIL; + } + $permittedFields[] = IAccountManager::PROPERTY_PHONE; $permittedFields[] = IAccountManager::PROPERTY_ADDRESS; $permittedFields[] = IAccountManager::PROPERTY_WEBSITE; @@ -649,14 +654,20 @@ public function editUserMultiValue( $permittedFields = []; if ($targetUser->getUID() === $currentLoggedInUser->getUID()) { - // Editing self (display, email) - $permittedFields[] = IAccountManager::COLLECTION_EMAIL; - $permittedFields[] = IAccountManager::COLLECTION_EMAIL . self::SCOPE_SUFFIX; + // Editing additional e-mail addresses if enabled. + if ($this->config->getSystemValue('allow_to_change_additional_emails', true) !== false) { + $permittedFields[] = IAccountManager::COLLECTION_EMAIL; + $permittedFields[] = IAccountManager::COLLECTION_EMAIL . self::SCOPE_SUFFIX; + } } else { // Check if admin / subadmin if ($isAdminOrSubadmin) { // They have permissions over the user - $permittedFields[] = IAccountManager::COLLECTION_EMAIL; + + // Editing additional e-mail addresses if enabled. + if ($this->config->getSystemValue('allow_to_change_additional_emails', true) !== false) { + $permittedFields[] = IAccountManager::COLLECTION_EMAIL; + } } else { // No rights throw new OCSException('', OCSController::RESPOND_NOT_FOUND); @@ -750,7 +761,10 @@ public function editUser(string $userId, string $key, string $value): DataRespon $permittedFields[] = IAccountManager::PROPERTY_DISPLAYNAME . self::SCOPE_SUFFIX; $permittedFields[] = IAccountManager::PROPERTY_EMAIL . self::SCOPE_SUFFIX; - $permittedFields[] = IAccountManager::COLLECTION_EMAIL; + // Editing additional e-mail addresses if enabled. + if ($this->config->getSystemValue('allow_to_change_additional_emails', true) !== false) { + $permittedFields[] = IAccountManager::COLLECTION_EMAIL; + } $permittedFields[] = self::USER_FIELD_PASSWORD; $permittedFields[] = self::USER_FIELD_NOTIFICATION_EMAIL; diff --git a/apps/settings/lib/Settings/Personal/PersonalInfo.php b/apps/settings/lib/Settings/Personal/PersonalInfo.php index 11d3f8b1e09ca..02e52e3b3ebf2 100644 --- a/apps/settings/lib/Settings/Personal/PersonalInfo.php +++ b/apps/settings/lib/Settings/Personal/PersonalInfo.php @@ -4,6 +4,7 @@ /** * @copyright Copyright (c) 2017 Arthur Schiwon + * @copyright Copyright (c) 2022 Informatyka Boguslawski sp. z o.o. sp.k., http://www.ib.pl/ * * @author Arthur Schiwon * @author Christoph Wurst @@ -171,6 +172,7 @@ public function getForm(): TemplateResponse { $accountParameters = [ 'displayNameChangeSupported' => $user->canChangeDisplayName(), + 'additionalEmailsChangeSupported' => $user->canChangeAdditionalEmails(), 'lookupServerUploadEnabled' => $lookupServerUploadEnabled, ]; diff --git a/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue b/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue index 6bfb8bfee8b2b..bec46dd0790ad 100644 --- a/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue +++ b/apps/settings/src/components/PersonalInfo/EmailSection/EmailSection.vue @@ -1,5 +1,6 @@