12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- <?php
- /*
- * This file is part of the FOSUserBundle package.
- *
- * (c) FriendsOfSymfony <http://friendsofsymfony.github.com/>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace FOS\UserBundle\Security;
- use Symfony\Component\Security\Core\User\UserProviderInterface;
- use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
- use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
- use Symfony\Component\Security\Core\User\UserInterface as SecurityUserInterface;
- use FOS\UserBundle\Model\User;
- use FOS\UserBundle\Model\UserInterface;
- use FOS\UserBundle\Model\UserManagerInterface;
- use FOS\UserBundle\Propel\User as PropelUser;
- class UserProvider implements UserProviderInterface
- {
- /**
- * @var UserManagerInterface
- */
- protected $userManager;
- /**
- * Constructor.
- *
- * @param UserManagerInterface $userManager
- */
- public function __construct(UserManagerInterface $userManager)
- {
- $this->userManager = $userManager;
- }
- /**
- * {@inheritDoc}
- */
- public function loadUserByUsername($username)
- {
- $user = $this->findUser($username);
- if (!$user) {
- throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username));
- }
- return $user;
- }
- /**
- * {@inheritDoc}
- */
- public function refreshUser(SecurityUserInterface $user)
- {
- if (!$user instanceof User && !$user instanceof PropelUser) {
- throw new UnsupportedUserException(sprintf('Expected an instance of FOS\UserBundle\Model\User, but got "%s".', get_class($user)));
- }
- if (!$this->supportsClass(get_class($user))) {
- throw new UnsupportedUserException(sprintf('Expected an instance of %s, but got "%s".', $this->userManager->getClass(), get_class($user)));
- }
- if (null === $reloadedUser = $this->userManager->findUserBy(array('id' => $user->getId()))) {
- throw new UsernameNotFoundException(sprintf('User with ID "%s" could not be reloaded.', $user->getId()));
- }
- return $reloadedUser;
- }
- /**
- * {@inheritDoc}
- */
- public function supportsClass($class)
- {
- $userClass = $this->userManager->getClass();
- return $userClass === $class || is_subclass_of($class, $userClass);
- }
- /**
- * Finds a user by username.
- *
- * This method is meant to be an extension point for child classes.
- *
- * @param string $username
- *
- * @return UserInterface|null
- */
- protected function findUser($username)
- {
- return $this->userManager->findUserByUsername($username);
- }
- }
|