From bdb40a2d113120515e96421d474b8106dbfbf964 Mon Sep 17 00:00:00 2001 From: nienzu Date: Tue, 13 Oct 2020 12:06:54 +0800 Subject: [PATCH 1/3] Make mail confirmation optional Signed-off-by: nienzu --- lib/Controller/RegisterController.php | 35 +++++++++++++------ lib/Controller/SettingsController.php | 4 ++- lib/Settings/RegistrationSettings.php | 2 ++ templates/admin.php | 8 +++++ templates/form/email.php | 7 +++- .../Controller/RegisterControllerTest.php | 2 ++ 6 files changed, 45 insertions(+), 13 deletions(-) diff --git a/lib/Controller/RegisterController.php b/lib/Controller/RegisterController.php index 040a4d3..b325a42 100644 --- a/lib/Controller/RegisterController.php +++ b/lib/Controller/RegisterController.php @@ -99,6 +99,7 @@ class RegisterController extends Controller { $params = [ 'email' => $email, 'message' => $message ?: $emailHint, + 'disable_email_verification' => $this->config->getAppValue($this->appName, 'disable_email_verification', 'no') ]; return new TemplateResponse('registration', 'form/email', $params, 'guest'); } @@ -126,18 +127,30 @@ class RegisterController extends Controller { $registration = $this->registrationService->createRegistration($email); } - try { - $this->mailService->sendTokenByMail($registration); - } catch (RegistrationException $e) { - return $this->showEmailForm($email, $e->getMessage()); + if ($this->config->getAppValue($this->appName, 'disable_email_verification', 'no') === 'yes') { + return new RedirectResponse( + $this->urlGenerator->linkToRoute( + 'registration.register.showUserForm', + [ + 'secret' => $registration->getClientSecret(), + 'token' => $registration->getToken() + ] + ) + ); + } else { + try { + $this->mailService->sendTokenByMail($registration); + } catch (RegistrationException $e) { + return $this->showEmailForm($email, $e->getMessage()); + } + + return new RedirectResponse( + $this->urlGenerator->linkToRoute( + 'registration.register.showVerificationForm', + ['secret' => $registration->getClientSecret()] + ) + ); } - - return new RedirectResponse( - $this->urlGenerator->linkToRoute( - 'registration.register.showVerificationForm', - ['secret' => $registration->getClientSecret()] - ) - ); } /** diff --git a/lib/Controller/SettingsController.php b/lib/Controller/SettingsController.php index 889c1e2..d939fd9 100644 --- a/lib/Controller/SettingsController.php +++ b/lib/Controller/SettingsController.php @@ -55,7 +55,8 @@ class SettingsController extends Controller { ?bool $admin_approval_required, ?bool $email_is_login, ?bool $domains_is_blocklist, - ?bool $show_domains) { + ?bool $show_domains, + ?bool $disable_email_verification) { // handle domains if (($allowed_domains === '') || ($allowed_domains === null)) { $this->config->deleteAppValue($this->appName, 'allowed_domains'); @@ -67,6 +68,7 @@ class SettingsController extends Controller { $this->config->setAppValue($this->appName, 'email_is_login', $email_is_login ? 'yes' : 'no'); $this->config->setAppValue($this->appName, 'domains_is_blocklist', $domains_is_blocklist ? 'yes' : 'no'); $this->config->setAppValue($this->appName, 'show_domains', $show_domains ? 'yes' : 'no'); + $this->config->setAppValue($this->appName, 'disable_email_verification', $disable_email_verification ? 'yes' : 'no'); // handle groups $groups = $this->groupmanager->search(''); diff --git a/lib/Settings/RegistrationSettings.php b/lib/Settings/RegistrationSettings.php index 42a35df..b783dd7 100644 --- a/lib/Settings/RegistrationSettings.php +++ b/lib/Settings/RegistrationSettings.php @@ -63,6 +63,7 @@ class RegistrationSettings implements ISettings { $emailIsLogin = $this->config->getAppValue($this->appName, 'email_is_login', 'no'); $domainsIsBlocklist = $this->config->getAppValue($this->appName, 'domains_is_blocklist', 'no'); $showDomains = $this->config->getAppValue($this->appName, 'show_domains', 'no'); + $disableEmailVerification = $this->config->getAppValue($this->appName, 'disable_email_verification', 'no'); return new TemplateResponse('registration', 'admin', [ 'groups' => $groupIds, @@ -72,6 +73,7 @@ class RegistrationSettings implements ISettings { 'email_is_login' => $emailIsLogin, 'domains_is_blocklist' => $domainsIsBlocklist, 'show_domains' => $showDomains, + 'disable_email_verification' => $disableEmailVerification, ], ''); } diff --git a/templates/admin.php b/templates/admin.php index 0bb6efe..a04270d 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -22,6 +22,14 @@ foreach ($_['groups'] as $group) {

+

t('Disable Email Verification')); ?>

+

+ > + +

+

t('Allowed email domains')); ?>

- + t('Back to login')); ?> diff --git a/tests/Unit/Controller/RegisterControllerTest.php b/tests/Unit/Controller/RegisterControllerTest.php index 896f209..c6ac01f 100644 --- a/tests/Unit/Controller/RegisterControllerTest.php +++ b/tests/Unit/Controller/RegisterControllerTest.php @@ -125,6 +125,7 @@ class RegisterControllerTest extends TestCase { public function testShowEmailForm(string $email, string $message): void { $controller = $this->getController(); $response = $controller->showEmailForm($email, $message); + $disable_email_verification = $this->config->getAppValue("registration", 'disable_email_verification', 'no'); self::assertSame(TemplateResponse::RENDER_AS_GUEST, $response->getRenderAs()); self::assertSame('form/email', $response->getTemplateName()); @@ -132,6 +133,7 @@ class RegisterControllerTest extends TestCase { self::assertSame([ 'email' => $email, 'message' => $message, + 'disable_email_verification' => $disable_email_verification, ], $response->getParams()); } From ab641685ed46dcc4d646a579dafbb1b28f5b1716 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 17 Nov 2020 19:57:14 +0100 Subject: [PATCH 2/3] Split the flows for less code intendation Signed-off-by: Joas Schilling --- lib/Controller/RegisterController.php | 26 +++++++++++++------------- lib/Service/RegistrationService.php | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/lib/Controller/RegisterController.php b/lib/Controller/RegisterController.php index b325a42..3f83d4a 100644 --- a/lib/Controller/RegisterController.php +++ b/lib/Controller/RegisterController.php @@ -137,20 +137,20 @@ class RegisterController extends Controller { ] ) ); - } else { - try { - $this->mailService->sendTokenByMail($registration); - } catch (RegistrationException $e) { - return $this->showEmailForm($email, $e->getMessage()); - } - - return new RedirectResponse( - $this->urlGenerator->linkToRoute( - 'registration.register.showVerificationForm', - ['secret' => $registration->getClientSecret()] - ) - ); } + + try { + $this->mailService->sendTokenByMail($registration); + } catch (RegistrationException $e) { + return $this->showEmailForm($email, $e->getMessage()); + } + + return new RedirectResponse( + $this->urlGenerator->linkToRoute( + 'registration.register.showVerificationForm', + ['secret' => $registration->getClientSecret()] + ) + ); } /** diff --git a/lib/Service/RegistrationService.php b/lib/Service/RegistrationService.php index bc71ac4..65bde42 100644 --- a/lib/Service/RegistrationService.php +++ b/lib/Service/RegistrationService.php @@ -142,7 +142,7 @@ class RegistrationService { $registration->setEmail($email); $registration->setUsername($username); $registration->setDisplayname($displayname); - if ($password !== "") { + if ($password !== '') { $password = $this->crypto->encrypt($password); $registration->setPassword($password); } From ea57938c2be499ff851e1a7074040a3db5a6409a Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Tue, 17 Nov 2020 19:58:00 +0100 Subject: [PATCH 3/3] p already writes the text, no need to echo Signed-off-by: Joas Schilling --- templates/form/email.php | 4 ++-- tests/Unit/Controller/RegisterControllerTest.php | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/form/email.php b/templates/form/email.php index d99ce83..01e2c56 100644 --- a/templates/form/email.php +++ b/templates/form/email.php @@ -19,9 +19,9 @@ style('registration', 'style'); diff --git a/tests/Unit/Controller/RegisterControllerTest.php b/tests/Unit/Controller/RegisterControllerTest.php index c6ac01f..25ea874 100644 --- a/tests/Unit/Controller/RegisterControllerTest.php +++ b/tests/Unit/Controller/RegisterControllerTest.php @@ -125,7 +125,7 @@ class RegisterControllerTest extends TestCase { public function testShowEmailForm(string $email, string $message): void { $controller = $this->getController(); $response = $controller->showEmailForm($email, $message); - $disable_email_verification = $this->config->getAppValue("registration", 'disable_email_verification', 'no'); + $disable_email_verification = $this->config->getAppValue('registration', 'disable_email_verification', 'no'); self::assertSame(TemplateResponse::RENDER_AS_GUEST, $response->getRenderAs()); self::assertSame('form/email', $response->getTemplateName());