src/Infrastructure/Auth/Symfony/Security/Provider/AdminEmailProvider.php line 33

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Infrastructure\Auth\Symfony\Security\Provider;
  4. use App\Domain\Administrator\Model\Administrator;
  5. use App\Domain\Administrator\Repository\AdministratorRepositoryInterface;
  6. use Symfony\Component\Security\Core\Exception\UserNotFoundException;
  7. use Symfony\Component\Security\Core\User\UserInterface;
  8. use Symfony\Component\Security\Core\User\UserProviderInterface;
  9. class AdminEmailProvider implements UserProviderInterface
  10. {
  11.     public function __construct(
  12.         private readonly AdministratorRepositoryInterface $administratorRepository
  13.     ) {
  14.     }
  15.     /**
  16.      * {@inheritdoc}
  17.      */
  18.     public function refreshUser(UserInterface $user): Administrator
  19.     {
  20.         return $this->loadUserByIdentifier($user->getUserIdentifier());
  21.     }
  22.     public function supportsClass(string $class): bool
  23.     {
  24.         return Administrator::class === $class;
  25.     }
  26.     public function loadUserByIdentifier(string $identifier): Administrator
  27.     {
  28.         $admin = $this->administratorRepository->findByEmail($identifier);
  29.         if (!$admin) {
  30.             throw new UserNotFoundException('Administrator not found');
  31.         }
  32.         if (!$admin->isActive()) {
  33.             throw new UserNotFoundException('Administrator not found');
  34.         }
  35.         return $admin;
  36.     }
  37. }