diff --git a/lib/Controller/RegisterController.php b/lib/Controller/RegisterController.php index dfe82bb..deb7e55 100644 --- a/lib/Controller/RegisterController.php +++ b/lib/Controller/RegisterController.php @@ -21,6 +21,7 @@ use \OCP\AppFramework\Http\TemplateResponse; use \OCP\AppFramework\Http\RedirectResponse; use \OCP\AppFramework\Controller; use OCP\IURLGenerator; +use \OCP\IConfig; use \OCP\IL10N; class RegisterController extends Controller { @@ -29,6 +30,8 @@ class RegisterController extends Controller { private $l10n; /** @var IURLGenerator */ private $urlgenerator; + /** @var IConfig */ + private $config; /** @var RegistrationService */ private $registrationService; /** @var MailService */ @@ -40,12 +43,14 @@ class RegisterController extends Controller { IRequest $request, IL10N $l10n, IURLGenerator $urlgenerator, + IConfig $config, RegistrationService $registrationService, MailService $mailService ) { parent::__construct($appName, $request); $this->l10n = $l10n; $this->urlgenerator = $urlgenerator; + $this->config = $config; $this->registrationService = $registrationService; $this->mailService = $mailService; } @@ -126,7 +131,11 @@ class RegisterController extends Controller { ); } - return new TemplateResponse('registration', 'form', ['email' => $registration->getEmail(), 'token' => $registration->getToken()], 'guest'); + return new TemplateResponse('registration', 'form', [ + 'email' => $registration->getEmail(), + 'email_is_login' => $this->config->getAppValue('registration', 'email_is_login', '0') === '1', + 'token' => $registration->getToken(), + ], 'guest'); } catch (RegistrationException $exception) { return $this->renderError($exception->getMessage(), $exception->getHint()); } @@ -140,9 +149,13 @@ class RegisterController extends Controller { * @return RedirectResponse|TemplateResponse */ public function createAccount($token) { - $username = $this->request->getParam('username'); - $password = $this->request->getParam('password'); $registration = $this->registrationService->getRegistrationForToken($token); + if ($this->config->getAppValue('registration', 'email_is_login', '0') === '1') { + $username = $registration->getEmail(); + } else { + $username = $this->request->getParam('username'); + } + $password = $this->request->getParam('password'); try { $user = $this->registrationService->createAccount($registration, $username, $password); diff --git a/templates/form.php b/templates/form.php index ada251e..c9e81b0 100644 --- a/templates/form.php +++ b/templates/form.php @@ -23,6 +23,7 @@ script('registration', 'form');

+

t('Username')); ?>

+

diff --git a/tests/Integration/Controller/RegisterControllerTest.php b/tests/Integration/Controller/RegisterControllerTest.php index 7475f67..b3bb45b 100644 --- a/tests/Integration/Controller/RegisterControllerTest.php +++ b/tests/Integration/Controller/RegisterControllerTest.php @@ -108,6 +108,7 @@ class RegisterControllerTest extends TestCase { $this->request, $this->l10n, $this->urlGenerator, + $this->config, $this->registrationService, $this->mailService );