src/Entrepreneurs/Bundle/FrontBundle/Controller/SecurityController.php line 23

Open in your IDE?
  1. <?php
  2. namespace Entrepreneurs\Bundle\FrontBundle\Controller;
  3. use Entrepreneurs\Bundle\Admin\Controller\AdminController;
  4. use Entrepreneurs\Bundle\AppBundle\Propel\EnseignantQuery;
  5. use Entrepreneurs\Bundle\AppBundle\Propel\EnseignantStatut;
  6. use Entrepreneurs\Bundle\AppBundle\Propel\EntrepreneurQuery;
  7. use Entrepreneurs\Bundle\AppBundle\Propel\EntrepreneurStatut;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  12. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  13. use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
  14. use Symfony\Component\Security\Core\Exception\BadCredentialsException;
  15. class SecurityController extends AdminController
  16. {
  17.     /**
  18.      * @Route(name="front_homepage", path="/")
  19.      */
  20.     public function connexionAction(Request $requestEncoderFactoryInterface $factoryTokenStorageInterface $tokenStorage): Response
  21.     {
  22.         $session $request->getSession()->all();
  23.         $spaces = [
  24.             '_security_entrepreneur' => 'entrepreneur_homepage',
  25.             '_security_enseignant' => 'enseignant_homepage',
  26.         ];
  27.         foreach ($spaces as $space => $route) {
  28.             if (isset($session[$space])) {
  29.                 return $this->redirectToRoute($route);
  30.             }
  31.         }
  32.         $template 'Front/Security/connexion.html.twig';
  33.         $error null;
  34.         $username trim($request->request->get('_username'));
  35.         $password trim($request->request->get('_password'));
  36.         if ($request->isMethod('post')) {
  37.             $user null;
  38.             $provider null;
  39.             if ($request->get('entrepreneur')) {
  40.                 $template 'Entrepreneur:Security:connexion.html.twig';
  41.                 $user EntrepreneurQuery::create()->findOneByEmail($username);
  42.                 $route 'entrepreneur_homepage';
  43.                 $provider 'entrepreneur';
  44.                 if ($user && (EntrepreneurStatut::SUPPRIME == $user->getStatutId() || EntrepreneurStatut::SUSPENDU == $user->getStatutId())) {
  45.                     $error = new BadCredentialsException('User account is locked.');
  46.                     return $this->renderTwig($template, [
  47.                         'last_username' => $username,
  48.                         'error' => $error,
  49.                     ]);
  50.                 }
  51.             } elseif ($request->get('enseignant')) {
  52.                 $template 'Enseignant:Security:connexion.html.twig';
  53.                 $user EnseignantQuery::create()->findOneByEmail($username);
  54.                 $route 'enseignant_homepage';
  55.                 $provider 'enseignant';
  56.                 if ($user && (EnseignantStatut::SUPPRIME == $user->getStatutId() || EnseignantStatut::SUSPENDU == $user->getStatutId())) {
  57.                     $error = new BadCredentialsException('User account is locked.');
  58.                     return $this->renderTwig($template, [
  59.                         'last_username' => $username,
  60.                         'error' => $error,
  61.                     ]);
  62.                 }
  63.             }
  64.             if ($user && $provider && $user->getPassword() && $user->getSalt()) {
  65.                 $encoder $factory->getEncoder($user);
  66.                 if ($encoder->isPasswordValid($user->getPassword(), $password$user->getSalt())) {
  67.                     $token = new UsernamePasswordToken($user$password$user->getRoles());
  68.                     $tokenStorage->setToken($token);
  69.                     $request->getSession()->set('_security_'.$providerserialize($token));
  70.                     $request->getSession()->save();
  71.                     return $this->redirectToRoute($route);
  72.                 }
  73.             }
  74.             if ($user && (!$user->getPassword() || !$user->getSalt())) {
  75.                 $error = new BadCredentialsException('Le compte n\'as pas été activé.');
  76.             } else {
  77.                 $error = new BadCredentialsException('Bad credentials');
  78.             }
  79.         }
  80.         return $this->renderTwig($template, [
  81.             'last_username' => $username,
  82.             'error' => $error,
  83.         ]);
  84.     }
  85. }