CustomOAuthUserProvider.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. <?php
  2. namespace Base\OAuthBundle\Security\Core\User;
  3. use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
  4. use HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserProvider;
  5. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  6. class CustomOAuthUserProvider extends OAuthUserProvider
  7. {
  8. protected $securityTokenStorage;
  9. public function __construct($securityTokenStorage)
  10. {
  11. $this->securityTokenStorage = $securityTokenStorage;
  12. }
  13. /**
  14. * {@inheritdoc}
  15. */
  16. public function loadUserByUsername($username)
  17. {
  18. return new CustomOAuthUser($username);
  19. }
  20. /**
  21. * {@inheritdoc}
  22. */
  23. public function loadUserByOAuthUserResponse(UserResponseInterface $response)
  24. {
  25. $user = $this->loadUserByUsername($response->getNickname());
  26. $user->setRoles($response->getRoles());
  27. $token = new UsernamePasswordToken($user, null, "secured_area", $user->getRoles());
  28. $this->securityTokenStorage->setToken($token);
  29. return $user;
  30. }
  31. /**
  32. * {@inheritdoc}
  33. */
  34. public function supportsClass($class)
  35. {
  36. return $class === 'Base\\OAuthBundle\\Security\\Core\\User\\CustomOAuthUser';
  37. }
  38. }