123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- <?php
- namespace Base\OAuthClientBundle\Security\Core\User;
- use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
- use HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserProvider;
- use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
- use Symfony\Component\Security\Core\User\UserInterface;
- use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
- class CustomOAuthUserProvider extends OAuthUserProvider
- {
- /**
- * @var TokenStorage
- */
- protected $securityTokenStorage;
- /**
- * @param TokenStorage $securityTokenStorage
- */
- public function __construct(TokenStorage $securityTokenStorage)
- {
- $this->securityTokenStorage = $securityTokenStorage;
- }
- /**
- * {@inheritdoc}
- */
- public function loadUserByUsername($username)
- {
- return new CustomOAuthUser($username);
- }
- /**
- * {@inheritdoc}
- */
- public function refreshUser(UserInterface $user)
- {
- if (!$this->supportsClass(get_class($user))) {
- throw new UnsupportedUserException(sprintf('Unsupported user class "%s"', get_class($user)));
- }
- return $user;
- }
- /**
- * {@inheritdoc}
- */
- public function loadUserByOAuthUserResponse(UserResponseInterface $response)
- {
- $user = $this->loadUserByUsername($response->getNickname());
- $user->setRoles($response->getRoles());
- $user->setTenancies($response->getTenancies());
- $user->setTenancyCurrent($response->getTenancyCurrent());
- $user->setHasIntercom($response->getHasIntercom());
- $token = new UsernamePasswordToken($user, null, "secured_area", $user->getRoles());
- $this->securityTokenStorage->setToken($token);
- return $user;
- }
- /**
- * {@inheritdoc}
- */
- public function supportsClass($class)
- {
- return $class === 'Base\\OAuthClientBundle\\Security\\Core\\User\\CustomOAuthUser';
- }
- }
|