src/Controller/SecurityController.php line 97

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Symfony package.
  4.  *
  5.  * (c) Fabien Potencier <fabien@symfony.com>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace App\Controller;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  16. use Symfony\Component\Security\Http\Util\TargetPathTrait;
  17. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  18. use App\Entity\User;
  19. use App\Repository\UserRepository;
  20. use Doctrine\Persistence\ManagerRegistry;
  21. use Doctrine\ORM\EntityManagerInterface;
  22. use Symfony\Component\Security\Core\Security;
  23. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  24. use Symfony\Component\Mailer\MailerInterface;
  25. use Symfony\Component\Mime\Email;
  26. /**
  27.  * Controller used to manage the application security.
  28.  * See https://symfony.com/doc/current/security/form_login_setup.html.
  29.  *
  30.  * @author Ryan Weaver <weaverryan@gmail.com>
  31.  * @author Javier Eguiluz <javier.eguiluz@gmail.com>
  32.  */
  33. class SecurityController extends AbstractController {
  34.     use TargetPathTrait;
  35.     private $security;
  36.     public function __construct(Security $security) {
  37.         $this->security $security;
  38.     }
  39.     #[Route('/login'name'security_login')]
  40.     public function login(Request $requestAuthenticationUtils $helperUserPasswordHasherInterface $passwordHasherManagerRegistry $entityManager): Response {
  41.         // if user is already logged in, don't display the login page again
  42.         if ($this->getUser()) {
  43.             if ($this->security->isGranted('ROLE_ADMIN')) {
  44.                 return $this->redirectToRoute('admin_dashboard');
  45.             } 
  46.         }
  47.         // create the user and hash its password
  48. //        $user = new User();
  49. //        $user->setFullName("Visitor");
  50. //        $user->setUsername("user");
  51. //        $user->setEmail("visitor@evenews.com");
  52. //        $user->setRoles(['ROLE_USER']);
  53. //        $user->setEnabled('1');
  54. //
  55. //        $hashedPassword = $passwordHasher->hashPassword($user, '123456');
  56. //        $user->setPassword($hashedPassword);
  57. //
  58. //        $entityManager->persist($user);
  59. //        $entityManager->flush();
  60.         ///end create the user
  61.         // this statement solves an edge-case: if you change the locale in the login
  62.         // page, after a successful login you are redirected to a page in the previous
  63.         // locale. This code regenerates the referrer URL whenever the login page is
  64.         // browsed, to ensure that its locale is always the current one.
  65.         if ($this->security->isGranted('ROLE_ADMIN')) {
  66.             $this->saveTargetPath($request->getSession(), 'main'$this->generateUrl('admin_dashboard'));
  67.         } else if ($this->security->isGranted('ROLE_CHIEF')) {
  68.             $this->saveTargetPath($request->getSession(), 'main'$this->generateUrl('chief_dashboard'));
  69.         } else if ($this->security->isGranted('ROLE_EDITOR')) {
  70.             $this->saveTargetPath($request->getSession(), 'main'$this->generateUrl('editor_dashboard'));
  71.         }
  72.         return $this->render('security/login.html.twig', [
  73.                     // last username entered by the user (if any)
  74.                     'last_username' => $helper->getLastUsername(),
  75.                     // last authentication error (if any)
  76.                     'error' => $helper->getLastAuthenticationError(),
  77.         ]);
  78.     }
  79.     /**
  80.      * This is the route the user can use to logout.
  81.      *
  82.      * But, this will never be executed. Symfony will intercept this first
  83.      * and handle the logout automatically. See logout in config/packages/security.yaml
  84.      */
  85.     #[Route('/logout'name'security_logout')]
  86.     public function logout(): void {
  87.         throw new \Exception('This should never be reached!');
  88.     }
  89. }