12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?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());
- $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';
- }
- }
|