src/Biceps/DocumentBundle/Controller/SecurityController.php line 34

Open in your IDE?
  1. <?php
  2. /**
  3.  * @copyright Copyright (c) 2022 Biceps
  4.  */
  5. namespace Biceps\DocumentBundle\Controller;
  6. use Biceps\DocumentBundle\Entity\User;
  7. use Exception;
  8. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  9. use Symfony\Component\HttpFoundation\RedirectResponse;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\Response;
  12. use Symfony\Component\PasswordHasher\Hasher\PasswordHasherFactoryInterface;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  15. class SecurityController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("/login", name="login")
  19.      */
  20.     public function login(Request $requestAuthenticationUtils $authUtils): Response
  21.     {
  22.         if (!$this->getUser()) {
  23.             $request->getSession()->set('lock'false);
  24.         }
  25.         $error $authUtils->getLastAuthenticationError();
  26.         return $this->render('@Document/Security/login.html.twig', [
  27.             'last_username' => $authUtils->getLastUsername(),
  28.             'error' => $error,
  29.             'master' => $this->container->getParameter('master'),
  30.         ]);
  31.     }
  32.     /**
  33.      * @Route("/logout", name="logout")
  34.      */
  35.     public function logout(Request $request): RedirectResponse
  36.     {
  37.         $request->getSession()->set('lock'false);
  38.         return $this->redirectToRoute('login');
  39.     }
  40.     /**
  41.      * @Route("/lock", name="lock")
  42.      */
  43.     public function lock(Request $request): Response
  44.     {
  45.         $session $request->getSession();
  46.         if (!$session->get('lock'false)) {
  47.             $request->getSession()->set('lock''dashboard');
  48.         }
  49.         return $this->render('@Document/Security/lock.html.twig');
  50.     }
  51.     /**
  52.      * @Route("/unlock", name="unlock")
  53.      */
  54.     public function unlock(Request $requestPasswordHasherFactoryInterface $hasher): RedirectResponse
  55.     {
  56.         $redirectTo false;
  57.         $session $request->getSession();
  58.         /** @var User $user */
  59.         $user $this->getUser();
  60.         if ($user) {
  61.             $redirectTo $session->get('lock');
  62.             $encoder $hasher->getPasswordHasher($user);
  63.             if ($encoder->verify($user->getPassword(), $request->request->get('password'false), $user->getSalt())) {
  64.                 $session->set('lock'false);
  65.             } else {
  66.                 $redirectTo 'lock';
  67.             }
  68.         }
  69.         try {
  70.             return $this->redirectToRoute($redirectTo ?: 'dashboard');
  71.         }catch(Exception $e){
  72.             return $this->redirectToRoute('dashboard');
  73.         }
  74.     }
  75. }