<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Doctrine\ORM\EntityManagerInterface;
class SecurityController extends AbstractController{
/**
* @Route("/login", name="login")
*/
public function login(AuthenticationUtils $authenticationUtils)
{
$error= $authenticationUtils->getLastAuthenticationError();
$lastUsername= $authenticationUtils->getLastUsername();
return $this->render('security/login.html.twig', array('error'=>$error, 'lastUsername'=>$lastUsername));
}
/**
* @Route(name="api_login_check", path="/api/login_check")
* @return Jsonresponse
*/
/*public function api_login(): JsonResponse
{
$user= $this->getUser();
return new Response([
'email'=> $user->getEmail(),
'roles'=> $user->getRoles(),
]);
}*/
/**
* @Route("/change-password", name="app_user_change_password")
*/
public function changePassword(Request $request, EntityManagerInterface $em, UserPasswordHasherInterface $passwordHasher): Response
{
$user = $this->getUser();
if (!$user) {
return $this->redirectToRoute('login');
}
// Si déjà changé, on redirige vers la page d’accueil
/*if ($user->isPasswordChanged()) {
return $this->redirectToRoute('app_dashboard');
}*/
if ($request->isMethod('POST')) {
$newPassword = $request->request->get('new_password');
$confirmPassword = $request->request->get('confirm_password');
if ($newPassword && $newPassword === $confirmPassword) {
$hashedPassword = $passwordHasher->hashPassword($user, $newPassword);
$user->setPassword($hashedPassword);
$user->setPasswordChanged(true);
$em->flush();
$this->addFlash('success', 'Votre mot de passe a été changé avec succès.');
return $this->redirectToRoute('app_dashboard');
}
$this->addFlash('danger', 'Les mots de passe ne correspondent pas.');
}
return $this->render('security/change_password.html.twig', ['user' => $user]);
}
}