diff --git a/src/Form/ChangePasswordType.php b/src/Form/ChangePasswordType.php new file mode 100644 index 0000000..bc67af5 --- /dev/null +++ b/src/Form/ChangePasswordType.php @@ -0,0 +1,50 @@ +add('oldPassword', PasswordType::class, [ + 'label' => 'Ancien mot de passe', + 'mapped' => false, + ]) + ->add('newPassword', RepeatedType::class, [ + 'type' => PasswordType::class, + 'mapped' => false, + 'first_options' => ['label' => 'Nouveau mot de passe'], + 'second_options' => ['label' => 'Confirmer mot de passe'], + + # Mise en place de contraintes dans la saisie du mot de passe + 'constraints' => [ + new NotBlank([ + 'message' => 'Veuillez saisir un mot de passe', + ]), + new Length([ + 'min' => 8, + 'minMessage' => 'Votre mot de passe doit faire au moins {{ limit }} caractères', + 'max' => 4096, + ]), + ], + ]) + ; + } + + public function configureOptions(OptionsResolver $resolver): void + { + $resolver->setDefaults([ + // Configure your form options here + ]); + } +} diff --git a/src/Security/AppCustomAuthenticator.php b/src/Security/AppCustomAuthenticator.php new file mode 100644 index 0000000..b073d37 --- /dev/null +++ b/src/Security/AppCustomAuthenticator.php @@ -0,0 +1,60 @@ +getPayload()->getString('email'); + + $request->getSession()->set(SecurityRequestAttributes::LAST_USERNAME, $email); + + return new Passport( + new UserBadge($email), + new PasswordCredentials($request->getPayload()->getString('password')), + [ + new CsrfTokenBadge('authenticate', $request->getPayload()->getString('_csrf_token')), + new RememberMeBadge(), + ] + ); + } + + public function onAuthenticationSuccess(Request $request, TokenInterface $token, string $firewallName): ?Response + { + if ($targetPath = $this->getTargetPath($request->getSession(), $firewallName)) { + return new RedirectResponse($targetPath); + } + + // For example: + // return new RedirectResponse($this->urlGenerator->generate('some_route')); + throw new \Exception('TODO: provide a valid redirect inside '.__FILE__); + } + + protected function getLoginUrl(Request $request): string + { + return $this->urlGenerator->generate(self::LOGIN_ROUTE); + } +} diff --git a/templates/user/edit_password.html.twig b/templates/user/edit_password.html.twig new file mode 100644 index 0000000..b1c27cd --- /dev/null +++ b/templates/user/edit_password.html.twig @@ -0,0 +1,37 @@ +{# templates/user/edit_password.html.twig #} +{% extends 'base.html.twig' %} + +{% block title %}Modifier mon mot de passe | {{ parent() }}{% endblock %} + +{% block body %} +