src/Infrastructure/Auth/Symfony/Security/Provider/SiteLoginProvider.php line 35

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