src/Eccube/Security/Core/User/CustomerProvider.php line 24

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of EC-CUBE
  4.  *
  5.  * Copyright(c) EC-CUBE CO.,LTD. All Rights Reserved.
  6.  *
  7.  * http://www.ec-cube.co.jp/
  8.  *
  9.  * For the full copyright and license information, please view the LICENSE
  10.  * file that was distributed with this source code.
  11.  */
  12. namespace Eccube\Security\Core\User;
  13. use Eccube\Entity\Customer;
  14. use Eccube\Entity\Master\CustomerStatus;
  15. use Eccube\Repository\CustomerRepository;
  16. use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
  17. use Symfony\Component\Security\Core\Exception\UserNotFoundException;
  18. use Symfony\Component\Security\Core\User\UserInterface;
  19. use Symfony\Component\Security\Core\User\UserProviderInterface;
  20. class CustomerProvider implements UserProviderInterface
  21. {
  22.     /**
  23.      * @var CustomerRepository
  24.      */
  25.     protected $customerRepository;
  26.     public function __construct(CustomerRepository $customerRepository)
  27.     {
  28.         $this->customerRepository $customerRepository;
  29.     }
  30.     /**
  31.      * @return UserInterface
  32.      *
  33.      * @throws UserNotFoundException
  34.      *
  35.      * @deprecated since Symfony 5.3, use loadUserByIdentifier() instead
  36.      */
  37.     public function loadUserByUsername($username): Customer
  38.     {
  39.         $Customer $this->customerRepository->findOneBy([
  40.             'email' => $username,
  41.             'Status' => CustomerStatus::REGULAR,
  42.         ]);
  43.         if (null === $Customer) {
  44.             throw new UserNotFoundException(sprintf('Username "%s" does not exist.'$username));
  45.         }
  46.         return $Customer;
  47.     }
  48.     /**
  49.      * Refreshes the user.
  50.      *
  51.      * It is up to the implementation to decide if the user data should be
  52.      * totally reloaded (e.g. from the database), or if the UserInterface
  53.      * object can just be merged into some internal array of users / identity
  54.      * map.
  55.      *
  56.      * @return UserInterface
  57.      *
  58.      * @throws UnsupportedUserException if the user is not supported
  59.      */
  60.     public function refreshUser(UserInterface $user)
  61.     {
  62.         if (!$user instanceof Customer) {
  63.             throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.'get_class($user)));
  64.         }
  65.         return $this->loadUserByUsername($user->getUsername());
  66.     }
  67.     /**
  68.      * Whether this provider supports the given user class.
  69.      *
  70.      * @param string $class
  71.      *
  72.      * @return bool
  73.      */
  74.     public function supportsClass($class)
  75.     {
  76.         return Customer::class === $class || is_subclass_of($classCustomer::class);
  77.     }
  78. }