refactor: add migration for email setting

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2025-04-02 18:33:38 +02:00
parent eb98e99530
commit e7859f0dac
5 changed files with 38 additions and 5 deletions

View file

@ -757,7 +757,7 @@ class UsersController extends AUserDataOCSController {
}
// Fallback to display name value to avoid changing behavior with the new option.
if ($this->config->getSystemValue('allow_user_to_change_email', $allowDisplayNameChange)) {
if ($this->config->getSystemValue('allow_user_to_change_email', true)) {
$permittedFields[] = IAccountManager::PROPERTY_EMAIL;
}
@ -918,8 +918,7 @@ class UsersController extends AUserDataOCSController {
$permittedFields[] = IAccountManager::PROPERTY_DISPLAYNAME;
}
// Fallback to display name value to avoid changing behavior with the new option.
if ($this->config->getSystemValue('allow_user_to_change_email', $allowDisplayNameChange)) {
if ($this->config->getSystemValue('allow_user_to_change_email', true)) {
$permittedFields[] = IAccountManager::PROPERTY_EMAIL;
}

View file

@ -0,0 +1,33 @@
<?php
/**
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OC\Core\Migrations;
use OCP\IConfig;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
/**
* Add `allow_user_to_change_email` system config
*/
class Version32000Date20250402182800 extends SimpleMigrationStep {
public function __construct(
private IConfig $config,
) {
}
public function postSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
$allowDisplayName = $this->config->getSystemValue('allow_user_to_change_display_name', null);
$allowEmail = $this->config->getSystemValue('allow_user_to_change_email', null);
// if displayname was set, but not the email setting, then set the email setting to the same as the email setting
if ($allowDisplayName !== null && $allowEmail === null) {
$this->config->setSystemValue('allow_user_to_change_email', $allowDisplayName === true);
}
}
}

View file

@ -1453,6 +1453,7 @@ return array(
'OC\\Core\\Migrations\\Version31000Date20240101084401' => $baseDir . '/core/Migrations/Version31000Date20240101084401.php',
'OC\\Core\\Migrations\\Version31000Date20240814184402' => $baseDir . '/core/Migrations/Version31000Date20240814184402.php',
'OC\\Core\\Migrations\\Version31000Date20250213102442' => $baseDir . '/core/Migrations/Version31000Date20250213102442.php',
'OC\\Core\\Migrations\\Version32000Date20250402182800' => $baseDir . '/core/Migrations/Version32000Date20250402182800.php',
'OC\\Core\\Notification\\CoreNotifier' => $baseDir . '/core/Notification/CoreNotifier.php',
'OC\\Core\\ResponseDefinitions' => $baseDir . '/core/ResponseDefinitions.php',
'OC\\Core\\Service\\LoginFlowV2Service' => $baseDir . '/core/Service/LoginFlowV2Service.php',

View file

@ -1502,6 +1502,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
'OC\\Core\\Migrations\\Version31000Date20240101084401' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20240101084401.php',
'OC\\Core\\Migrations\\Version31000Date20240814184402' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20240814184402.php',
'OC\\Core\\Migrations\\Version31000Date20250213102442' => __DIR__ . '/../../..' . '/core/Migrations/Version31000Date20250213102442.php',
'OC\\Core\\Migrations\\Version32000Date20250402182800' => __DIR__ . '/../../..' . '/core/Migrations/Version32000Date20250402182800.php',
'OC\\Core\\Notification\\CoreNotifier' => __DIR__ . '/../../..' . '/core/Notification/CoreNotifier.php',
'OC\\Core\\ResponseDefinitions' => __DIR__ . '/../../..' . '/core/ResponseDefinitions.php',
'OC\\Core\\Service\\LoginFlowV2Service' => __DIR__ . '/../../..' . '/core/Service/LoginFlowV2Service.php',

View file

@ -448,8 +448,7 @@ class User implements IUser {
}
public function canChangeEmail(): bool {
// Fallback to display name value to avoid changing behavior with the new option.
return $this->config->getSystemValueBool('allow_user_to_change_email', $this->config->getSystemValueBool('allow_user_to_change_display_name', true));
return $this->config->getSystemValueBool('allow_user_to_change_email', true);
}
/**