| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 | 
							- <?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\Model;
 - 
 - use FOS\UserBundle\Util\CanonicalizerInterface;
 - use Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface;
 - use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
 - use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
 - use Symfony\Component\Security\Core\User\UserInterface as SecurityUserInterface;
 - use Symfony\Component\Security\Core\User\UserProviderInterface;
 - 
 - /**
 -  * Abstract User Manager implementation which can be used as base class for your
 -  * concrete manager.
 -  *
 -  * @author Johannes M. Schmitt <schmittjoh@gmail.com>
 -  */
 - abstract class UserManager implements UserManagerInterface, UserProviderInterface
 - {
 -     protected $encoderFactory;
 -     protected $usernameCanonicalizer;
 -     protected $emailCanonicalizer;
 - 
 -     /**
 -      * Constructor.
 -      *
 -      * @param EncoderFactoryInterface $encoderFactory
 -      * @param CanonicalizerInterface  $usernameCanonicalizer
 -      * @param CanonicalizerInterface  $emailCanonicalizer
 -      */
 -     public function __construct(EncoderFactoryInterface $encoderFactory, CanonicalizerInterface $usernameCanonicalizer, CanonicalizerInterface $emailCanonicalizer)
 -     {
 -         $this->encoderFactory = $encoderFactory;
 -         $this->usernameCanonicalizer = $usernameCanonicalizer;
 -         $this->emailCanonicalizer = $emailCanonicalizer;
 -     }
 - 
 -     /**
 -      * Returns an empty user instance
 -      *
 -      * @return UserInterface
 -      */
 -     public function createUser()
 -     {
 -         $class = $this->getClass();
 -         $user = new $class;
 - 
 -         return $user;
 -     }
 - 
 -     /**
 -      * Finds a user by email
 -      *
 -      * @param string $email
 -      *
 -      * @return UserInterface
 -      */
 -     public function findUserByEmail($email)
 -     {
 -         return $this->findUserBy(array('emailCanonical' => $this->canonicalizeEmail($email)));
 -     }
 - 
 -     /**
 -      * Finds a user by username
 -      *
 -      * @param string $username
 -      *
 -      * @return UserInterface
 -      */
 -     public function findUserByUsername($username)
 -     {
 -         return $this->findUserBy(array('usernameCanonical' => $this->canonicalizeUsername($username)));
 -     }
 - 
 -     /**
 -      * Finds a user either by email, or username
 -      *
 -      * @param string $usernameOrEmail
 -      *
 -      * @return UserInterface
 -      */
 -     public function findUserByUsernameOrEmail($usernameOrEmail)
 -     {
 -         if (filter_var($usernameOrEmail, FILTER_VALIDATE_EMAIL)) {
 -             return $this->findUserByEmail($usernameOrEmail);
 -         }
 - 
 -         return $this->findUserByUsername($usernameOrEmail);
 -     }
 - 
 -     /**
 -      * Finds a user either by confirmation token
 -      *
 -      * @param string $token
 -      *
 -      * @return UserInterface
 -      */
 -     public function findUserByConfirmationToken($token)
 -     {
 -         return $this->findUserBy(array('confirmationToken' => $token));
 -     }
 - 
 -     /**
 -      * Refreshed a user by User Instance
 -      *
 -      * Throws UnsupportedUserException if a User Instance is given which is not
 -      * managed by this UserManager (so another Manager could try managing it)
 -      *
 -      * It is strongly discouraged to use this method manually as it bypasses
 -      * all ACL checks.
 -      *
 -      * @param SecurityUserInterface $user
 -      *
 -      * @return UserInterface
 -      */
 -     public function refreshUser(SecurityUserInterface $user)
 -     {
 -         $class = $this->getClass();
 -         if (!$user instanceof $class) {
 -             throw new UnsupportedUserException('Account is not supported.');
 -         }
 -         if (!$user instanceof User) {
 -             throw new UnsupportedUserException(sprintf('Expected an instance of FOS\UserBundle\Model\User, but got "%s".', get_class($user)));
 -         }
 - 
 -         $refreshedUser = $this->findUserBy(array('id' => $user->getId()));
 -         if (null === $refreshedUser) {
 -             throw new UsernameNotFoundException(sprintf('User with ID "%d" could not be reloaded.', $user->getId()));
 -         }
 - 
 -         return $refreshedUser;
 -     }
 - 
 -     /**
 -      * Loads a user by username
 -      *
 -      * It is strongly discouraged to call this method manually as it bypasses
 -      * all ACL checks.
 -      *
 -      * @param string $username
 -      *
 -      * @return UserInterface
 -      */
 -     public function loadUserByUsername($username)
 -     {
 -         $user = $this->findUserByUsername($username);
 - 
 -         if (!$user) {
 -             throw new UsernameNotFoundException(sprintf('No user with name "%s" was found.', $username));
 -         }
 - 
 -         return $user;
 -     }
 - 
 -     /**
 -      * {@inheritDoc}
 -      */
 -     public function updateCanonicalFields(UserInterface $user)
 -     {
 -         $user->setUsernameCanonical($this->canonicalizeUsername($user->getUsername()));
 -         $user->setEmailCanonical($this->canonicalizeEmail($user->getEmail()));
 -     }
 - 
 -     /**
 -      * {@inheritDoc}
 -      */
 -     public function updatePassword(UserInterface $user)
 -     {
 -         if (0 !== strlen($password = $user->getPlainPassword())) {
 -             $encoder = $this->getEncoder($user);
 -             $user->setPassword($encoder->encodePassword($password, $user->getSalt()));
 -             $user->eraseCredentials();
 -         }
 -     }
 - 
 -     /**
 -      * Canonicalizes an email
 -      *
 -      * @param string $email
 -      *
 -      * @return string
 -      */
 -     protected function canonicalizeEmail($email)
 -     {
 -         return $this->emailCanonicalizer->canonicalize($email);
 -     }
 - 
 -     /**
 -      * Canonicalizes a username
 -      *
 -      * @param string $username
 -      *
 -      * @return string
 -      */
 -     protected function canonicalizeUsername($username)
 -     {
 -         return $this->usernameCanonicalizer->canonicalize($username);
 -     }
 - 
 -     protected function getEncoder(UserInterface $user)
 -     {
 -         return $this->encoderFactory->getEncoder($user);
 -     }
 - 
 -     /**
 -      * {@inheritDoc}
 -      */
 -     public function supportsClass($class)
 -     {
 -         return $class === $this->getClass();
 -     }
 - }
 
 
  |