src/CoreBundle/Controller/Admin/LoginController.php line 56

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\CoreBundle\Controller\Admin;
  4. use App\CoreBundle\Form\Admin\Login\LoginFormType;
  5. use App\CoreBundle\Model\Security\AdministratorLoginFacade;
  6. use App\CoreBundle\Model\Security\Authenticator;
  7. use App\CoreBundle\Model\Security\Roles;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  11. class LoginController extends AdminBaseController
  12. {
  13.     public const ORIGINAL_REFERER_PARAMETER_NAME 'originalReferer';
  14.     /**
  15.      * @var \App\CoreBundle\Model\Security\Authenticator
  16.      */
  17.     protected $authenticator;
  18.     /**
  19.      * @var \App\CoreBundle\Model\Security\AdministratorLoginFacade
  20.      */
  21.     protected $administratorLoginFacade;
  22.     /**
  23.      * @param \App\CoreBundle\Model\Security\Authenticator $authenticator
  24.      * @param \App\CoreBundle\Model\Security\AdministratorLoginFacade $administratorLoginFacade
  25.      */
  26.     public function __construct(
  27.         Authenticator $authenticator,
  28.         AdministratorLoginFacade $administratorLoginFacade
  29.     ) {
  30.         $this->authenticator $authenticator;
  31.         $this->administratorLoginFacade $administratorLoginFacade;
  32.     }
  33.     /**
  34.      * @Route("/", name="admin_login")
  35.      * @Route("/login-check/", name="admin_login_check")
  36.      * @Route("/logout/", name="admin_logout")
  37.      * @param \Symfony\Component\HttpFoundation\Request $request
  38.      */
  39.     public function loginAction(Request $request)
  40.     {
  41.         if ($this->isGranted(Roles::ROLE_ADMIN)) {
  42.             return $this->redirectToRoute('admin_product_list');
  43.         }
  44.         $error null;
  45.         $form $this->createForm(LoginFormType::class, null, [
  46.             'action' => $this->generateUrl('admin_login_check'),
  47.         ]);
  48.         try {
  49.             $this->authenticator->checkLoginProcess($request);
  50.         } catch (\App\CoreBundle\Model\Security\Exception\LoginFailedException $e) {
  51.             $error t('Log in failed.');
  52.         }
  53.         return $this->render('Admin/Content/Login/login.html.twig', [
  54.             'form' => $form->createView(),
  55.             'error' => $error,
  56.         ]);
  57.     }
  58.     /**
  59.      * @Route("/sso/", name="admin_login_sso")
  60.      * @param \Symfony\Component\HttpFoundation\Request $request
  61.      */
  62.     public function ssoAction(Request $request)
  63.     {
  64.         $administrator $this->getUser();
  65.         /* @var $administrator \App\CoreBundle\Model\Administrator\Administrator */
  66.         $redirectTo $this->generateUrl(
  67.             'admin_login_authorization',
  68.             [
  69.                 self::ORIGINAL_REFERER_PARAMETER_NAME => $request->get(self::ORIGINAL_REFERER_PARAMETER_NAME),
  70.             ],
  71.             UrlGeneratorInterface::ABSOLUTE_URL
  72.         );
  73.         return $this->redirect($redirectTo);
  74.     }
  75.     /**
  76.      * @Route("/authorization/", name="admin_login_authorization")
  77.      * @param \Symfony\Component\HttpFoundation\Request $request
  78.      */
  79.     public function authorizationAction(Request $request)
  80.     {
  81.         $originalReferer $request->get(self::ORIGINAL_REFERER_PARAMETER_NAME);
  82.         $redirectTo = ($originalReferer !== null) ? $originalReferer $this->generateUrl('admin_product_list');
  83.         return $this->redirect($redirectTo);
  84.     }
  85. }