From d9544c6edba2596e140714b1f029cf8ec10843f4 Mon Sep 17 00:00:00 2001 From: Hugo Sales Date: Tue, 16 Nov 2021 14:48:18 +0000 Subject: [PATCH] [CORE][SECURITY] Move to the new authentication format, for Symfony 5.3 --- config/packages/security.yaml | 2 +- src/Security/Authenticator.php | 22 ++++++++++++++++++---- templates/security/login.html.twig | 5 ++--- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/config/packages/security.yaml b/config/packages/security.yaml index c186a5a024..9340e1e0dc 100644 --- a/config/packages/security.yaml +++ b/config/packages/security.yaml @@ -3,8 +3,8 @@ security: password_hashers: App\Entity\LocalUser: algorithm: auto - providers: # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers + providers: local_user: chain: providers: [local_user_by_nickname, local_user_by_email] diff --git a/src/Security/Authenticator.php b/src/Security/Authenticator.php index a5f56e3757..9ba4290e25 100644 --- a/src/Security/Authenticator.php +++ b/src/Security/Authenticator.php @@ -82,9 +82,9 @@ class Authenticator extends AbstractFormLoginAuthenticator implements Authentica public function getCredentials(Request $request): array { return [ - 'nickname_or_email' => $request->request->get('nickname_or_email'), - 'password' => $request->request->get('password'), - 'csrf_token' => $request->request->get('_csrf_token'), + 'nickname_or_email' => $request->request->get('_username'), + 'password' => $request->request->get('_password'), + 'csrf_token' => $request->request->get('_csrf_token'), ]; } @@ -161,7 +161,21 @@ class Authenticator extends AbstractFormLoginAuthenticator implements Authentica return new RedirectResponse(Router::url('main_all')); } - protected function getLoginUrl(): string + public function authenticate(Request $request): PassportInterface + { + $nickname = $request->request->get('nickname', ''); + $request->getSession()->set(Security::LAST_USERNAME, $nickname); + + return new Passport( + new UserBadge($nickname), + new PasswordCredentials($request->request->get('password', '')), + [ + new CsrfTokenBadge('authenticate', $request->request->get('_csrf_token')), + ], + ); + } + + protected function getLoginUrl() { return Router::url(self::LOGIN_ROUTE); } diff --git a/templates/security/login.html.twig b/templates/security/login.html.twig index 752af2d247..d328921938 100644 --- a/templates/security/login.html.twig +++ b/templates/security/login.html.twig @@ -39,13 +39,12 @@
- +

{{ "Your nickname or email address." | trans }}

- +

{{ "Your account's password." | trans }}