From a9246921f04f989924de5ac31b5d7a7bf0d91d63 Mon Sep 17 00:00:00 2001
From: Joas Schilling
Date: Fri, 28 Aug 2020 18:15:21 +0200
Subject: [PATCH] Add admin UI option for "Force email as user id"
Signed-off-by: Joas Schilling
---
css/settings.css | 4 ++++
lib/Controller/RegisterController.php | 4 ++--
lib/Controller/SettingsController.php | 12 ++++++++----
lib/Settings/RegistrationSettings.php | 8 ++++++--
templates/admin.php | 11 ++++++++---
5 files changed, 28 insertions(+), 11 deletions(-)
diff --git a/css/settings.css b/css/settings.css
index 97d6272..5c4c8d2 100644
--- a/css/settings.css
+++ b/css/settings.css
@@ -7,3 +7,7 @@ select {
h3 {
margin-top: 25px;
}
+
+p {
+ margin-top: 15px;
+}
diff --git a/lib/Controller/RegisterController.php b/lib/Controller/RegisterController.php
index cc5ea0e..7919ff9 100644
--- a/lib/Controller/RegisterController.php
+++ b/lib/Controller/RegisterController.php
@@ -194,7 +194,7 @@ class RegisterController extends Controller {
return new TemplateResponse('registration', 'form/user', [
'email' => $registration->getEmail(),
- 'email_is_login' => $this->config->getAppValue('registration', 'email_is_login', '0') === '1',
+ 'email_is_login' => $this->config->getAppValue('registration', 'email_is_login', 'no') === 'yes',
'username' => $username,
'message' => $message,
], 'guest');
@@ -218,7 +218,7 @@ class RegisterController extends Controller {
return $this->validateSecretAndTokenErrorPage();
}
- if ($this->config->getAppValue('registration', 'email_is_login', '0') === '1') {
+ if ($this->config->getAppValue('registration', 'email_is_login', 'no') === 'yes') {
$username = $registration->getEmail();
}
diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php
index 4c809e3..0801e2a 100644
--- a/lib/Controller/SettingsController.php
+++ b/lib/Controller/SettingsController.php
@@ -44,19 +44,23 @@ class SettingsController extends Controller {
*
* @param string $registered_user_group all newly registered user will be put in this group
* @param string $allowed_domains Registrations are only allowed for E-Mailadresses with these domains
- * @param bool $admin_approval_required newly registered users have to be validated by an admin
+ * @param bool|null $admin_approval_required newly registered users have to be validated by an admin
+ * @param bool|null $email_is_login email address is forced as user id
* @return DataResponse
*/
- public function admin($registered_user_group, $allowed_domains, $admin_approval_required) {
+ public function admin(string $registered_user_group, string $allowed_domains, ?bool $admin_approval_required, ?bool $email_is_login) {
// handle domains
- if (($allowed_domains==='') || ($allowed_domains === null)) {
+ if (($allowed_domains === '') || ($allowed_domains === null)) {
$this->config->deleteAppValue($this->appName, 'allowed_domains');
} else {
$this->config->setAppValue($this->appName, 'allowed_domains', $allowed_domains);
}
// handle admin validation
- $this->config->setAppValue($this->appName, 'admin_approval_required', $admin_approval_required ? "yes" : "no");
+ $this->config->setAppValue($this->appName, 'admin_approval_required', $admin_approval_required ? 'yes' : 'no');
+
+ // handle email is login
+ $this->config->setAppValue($this->appName, 'email_is_login', $email_is_login ? 'yes' : 'no');
// handle groups
$groups = $this->groupmanager->search('');
diff --git a/lib/Settings/RegistrationSettings.php b/lib/Settings/RegistrationSettings.php
index 0f9ed51..bf2fd65 100644
--- a/lib/Settings/RegistrationSettings.php
+++ b/lib/Settings/RegistrationSettings.php
@@ -60,13 +60,17 @@ class RegistrationSettings implements ISettings {
$allowedDomains = $this->config->getAppValue($this->appName, 'allowed_domains', '');
// handle admin validation
- $adminApprovalRequired = $this->config->getAppValue($this->appName, 'admin_approval_required', "no");
+ $adminApprovalRequired = $this->config->getAppValue($this->appName, 'admin_approval_required', 'no');
+
+ // handle admin validation
+ $emailIsLogin = $this->config->getAppValue($this->appName, 'email_is_login', 'no');
return new TemplateResponse('registration', 'admin', [
'groups' => $groupIds,
'current' => $assignedGroups,
'allowed' => $allowedDomains,
- 'approval_required' => $adminApprovalRequired
+ 'approval_required' => $adminApprovalRequired,
+ 'email_is_login' => $emailIsLogin,
], '');
}
diff --git a/templates/admin.php b/templates/admin.php
index 3eecc2c..c0bffaf 100644
--- a/templates/admin.php
+++ b/templates/admin.php
@@ -28,14 +28,19 @@ foreach ($_['groups'] as $group) {
+ t('Enter a semicolon-separated list of allowed domains, * for wildcard. Example: %s', ['nextcloud.com;*.example.com']));?>
+
- t('Enter a semicolon-separated list of allowed domains, * for wildcard. Example: %s', ['nextcloud.com;*.example.com']));?>
+ >
+
t('Admin approval')); ?>
- >