*/ class UserProvider implements UserProviderInterface { protected $encoder; protected $saltGenerator; public function __construct(MessageDigestPasswordEncoder $encoder, SaltGenerator $saltGenerator) { $this->encoder = $encoder; $this->saltGenerator = $saltGenerator; } public function setEncoder(MessageDigestPasswordEncoder $encoder) { $this->encoder = $encoder; return $this; } public function getEncoder() { return $this->encoder; } public function setSaltGenerator(SaltGenerator $saltGenerator) { $this->saltGenerator = $saltGenerator; return $this; } public function getSaltGenerator() { return $this->saltGenerator; } public function userExists($username) { return UserQuery::create() ->filterByUsername($username) ->count() > 0; } public function createUser() { return new User(); } public function registerUser(User $user, $password) { $user->setSalt($this->saltGenerator->generate()); $user ->setRoles('ROLE_USER') ->setPassword($this->encoder->encodePassword($password, $user->getSalt())) ->save(); return $user; } public function updateUserPassword(User $user, $password) { $user ->setPassword($this->encoder->encodePassword($password, $user->getSalt())) ->save(); return $user; } public function loadUserByUsername($username) { $user = UserQuery::create()->findOneByUsername($username); if (null === $user) { throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username)); } return $user; } public function refreshUser(UserInterface $user) { if (!$user instanceof User) { throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user))); } return $this->loadUserByUsername($user->getUsername()); } public function supportsClass($class) { return $class === 'Gist\Model\User'; } }