src/Security/Provider/UserProvider.php line 44

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace Slivki\Security\Provider;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Slivki\Entity\User;
  6. use Slivki\Repository\User\UserRepositoryInterface;
  7. use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
  8. use Symfony\Component\Security\Core\User\UserInterface;
  9. use Symfony\Component\Security\Core\User\UserProviderInterface;
  10. final class UserProvider implements UserProviderInterface
  11. {
  12.     private UserRepositoryInterface $userRepository;
  13.     private EntityManagerInterface $entityManager;
  14.     public function __construct(UserRepositoryInterface $userRepositoryEntityManagerInterface $entityManager)
  15.     {
  16.         $this->userRepository $userRepository;
  17.         $this->entityManager $entityManager;
  18.     }
  19.     public function refreshUser(UserInterface $user): UserInterface
  20.     {
  21.         if (!$user instanceof User) {
  22.             throw new UnsupportedUserException(\sprintf('Instances of "%s" are not supported.', \get_debug_type($user)));
  23.         }
  24.         return $this->userRepository->getById($user->getID());
  25.     }
  26.     public function supportsClass(string $class): bool
  27.     {
  28.         return $class === User::class || \is_subclass_of($classUser::class);
  29.     }
  30.     /**
  31.      * @return UserInterface|User|null
  32.      */
  33.     public function loadUserByUsername(string $username): ?UserInterface
  34.     {
  35.         return $this->entityManager->getRepository(User::class)->loadUserByUsername($username);
  36.     }
  37. }