src/Security/TwitchAuthenticator.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\Security;
  3. use App\Entity\User;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\HttpFoundation\Response;
  7. use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
  8. use Symfony\Component\Security\Core\Exception\AuthenticationException;
  9. use Symfony\Component\Security\Http\Authenticator\AbstractAuthenticator;
  10. use Symfony\Component\Security\Http\Authenticator\Passport\Badge\RememberMeBadge;
  11. use Symfony\Component\Security\Http\Authenticator\Passport\Badge\UserBadge;
  12. use Symfony\Component\Security\Http\Authenticator\Passport\Passport;
  13. use Symfony\Component\Security\Http\Authenticator\Passport\SelfValidatingPassport;
  14. class TwitchAuthenticator extends AbstractAuthenticator
  15. {
  16.     public function __construct(
  17.         private EntityManagerInterface $_em
  18.     )
  19.     {}
  20.     public function supports(Request $request): ?bool
  21.     {
  22.         return $request->getSession()->has('login_user');
  23.     }
  24.     public function authenticate(Request $request): Passport
  25.     {
  26.         $uuid $request->getSession()->get('login_user');
  27.         $user $this->_em->getRepository(User::class)->findOneBy(['uuid' => $uuid]);
  28.         if (!$user) {
  29.             throw new AuthenticationException('The user is not found.');
  30.         }
  31.         return new SelfValidatingPassport(
  32.             new UserBadge($user->getUuid()),
  33.             [
  34.                 new RememberMeBadge(),
  35.             ]);
  36.     }
  37.     public function onAuthenticationSuccess(Request $requestTokenInterface $tokenstring $firewallName): ?Response
  38.     {
  39.         return null;
  40.     }
  41.     public function onAuthenticationFailure(Request $requestAuthenticationException $exception): ?Response
  42.     {
  43.         return null;
  44.     }
  45. }