Repository URL to install this package:
|
Version:
6.2.10 ▾
|
<?php
namespace DigitalAscetic\BaseUserBundle\Security;
use DigitalAscetic\BaseUserBundle\Entity\AbstractBaseUser;
use DigitalAscetic\BaseUserBundle\Service\UserManagerInterface;
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
use Symfony\Component\Security\Core\Exception\UserNotFoundException;
use Symfony\Component\Security\Core\User\PasswordUpgraderInterface;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
class UserProvider implements UserProviderInterface, PasswordUpgraderInterface
{
const SERVICE_NAME = 'digital_ascetic_base_user.security.user_provider';
/** @var UserManagerInterface */
private $userManager;
/**
* UserProvider constructor.
* @param UserManagerInterface $userManager
*/
public function __construct(UserManagerInterface $userManager)
{
$this->userManager = $userManager;
}
public function upgradePassword(PasswordAuthenticatedUserInterface $user, string $newEncodedPassword): void
{
$this->userManager->upgradePassword($user, $newEncodedPassword);
}
/**
* @param UserInterface $user
* @return UserInterface|null
*/
public function refreshUser(UserInterface $user)
{
if (!$user instanceof UserInterface) {
throw new UnsupportedUserException(sprintf('Invalid user class "%s".', get_class($user)));
}
if (!$this->supportsClass($user)) {
throw new UnsupportedUserException(sprintf('Invalid user class "%s".', get_class($user)));
}
if (null === $reloadedUser = $this->userManager->findUserBy(['id' => $user->getId()])) {
throw new UserNotFoundException(sprintf('User with ID "%s" could not be reloaded.', $user->getId()));
}
return $reloadedUser;
}
/**
* @param $class
* @return bool
*/
public function supportsClass($class)
{
return AbstractBaseUser::class === $class || is_subclass_of($class, AbstractBaseUser::class);
}
public function loadUserByIdentifier(string $identifier): UserInterface
{
$user = $this->userManager->findUser($identifier);
if (!$user) {
throw new UserNotFoundException(sprintf('Username "%s" does not exist.', $identifier));
}
return $user;
}
}