src/Controller/AuthController.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Api\BrcBackend\Exception\UnauthorizedException;
  4. use App\Form\LoginType;
  5. use App\Service\Auth\UserAuthManager;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\Form\FormError;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. final class AuthController extends AbstractController
  13. {
  14.     /**
  15.      * @Route("/login", name="login", methods={"GET", "POST"})
  16.      *
  17.      * @param Request $request
  18.      * @param UserAuthManager $authManager
  19.      * @param TranslatorInterface $translator
  20.      *
  21.      * @return Response
  22.      */
  23.     public function login(Request $requestUserAuthManager $authManagerTranslatorInterface $translator): Response
  24.     {
  25.         if ($authManager->isAuthenticated()) {
  26.             return $this->redirectToRoute('user_edit_company');
  27.         }
  28.         $form $this->createForm(LoginType::class);
  29.         $form->handleRequest($request);
  30.         if ($form->isSubmitted() && $form->isValid()) {
  31.             try {
  32.                 $authManager->login($form->getData());
  33.                 return $this->redirectToRoute('user_edit_company');
  34.             } catch (UnauthorizedException $ex) {
  35.                 $form->addError(new FormError($translator->trans('login.form.invalid_credentials')));
  36.             } catch (\Throwable $ex) {
  37.                 $form->addError(new FormError($translator->trans('login.form.service_unavailable')));
  38.             }
  39.         }
  40.         return $this->render('auth/login.html.twig', [
  41.             'form' => $form->createView(),
  42.         ]);
  43.     }
  44.     /**
  45.      * @Route("/logout", name="logout", methods={"GET"})
  46.      *
  47.      * @param UserAuthManager $authManager
  48.      *
  49.      * @return Response
  50.      */
  51.     public function logout(UserAuthManager $authManager): Response
  52.     {
  53.         if ($authManager->isAuthenticated()) {
  54.             $authManager->clear();
  55.         }
  56.         return $this->redirectToRoute('login');
  57.     }
  58. }