1
0

UserInfoController.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace OAuth2\OpenID\Controller;
  3. use OAuth2\Scope;
  4. use OAuth2\TokenType\TokenTypeInterface;
  5. use OAuth2\Storage\AccessTokenInterface;
  6. use OAuth2\OpenID\Storage\UserClaimsInterface;
  7. use OAuth2\Controller\ResourceController;
  8. use OAuth2\ScopeInterface;
  9. use OAuth2\RequestInterface;
  10. use OAuth2\ResponseInterface;
  11. /**
  12. * @see OAuth2\Controller\UserInfoControllerInterface
  13. */
  14. class UserInfoController extends ResourceController implements UserInfoControllerInterface
  15. {
  16. /**
  17. * @var UserClaimsInterface
  18. */
  19. protected $userClaimsStorage;
  20. /**
  21. * Constructor
  22. *
  23. * @param TokenTypeInterface $tokenType
  24. * @param AccessTokenInterface $tokenStorage
  25. * @param UserClaimsInterface $userClaimsStorage
  26. * @param array $config
  27. * @param ScopeInterface $scopeUtil
  28. */
  29. public function __construct(TokenTypeInterface $tokenType, AccessTokenInterface $tokenStorage, UserClaimsInterface $userClaimsStorage, $config = array(), ScopeInterface $scopeUtil = null)
  30. {
  31. parent::__construct($tokenType, $tokenStorage, $config, $scopeUtil);
  32. $this->userClaimsStorage = $userClaimsStorage;
  33. }
  34. /**
  35. * Handle the user info request
  36. *
  37. * @param RequestInterface $request
  38. * @param ResponseInterface $response
  39. * @return void
  40. */
  41. public function handleUserInfoRequest(RequestInterface $request, ResponseInterface $response)
  42. {
  43. if (!$this->verifyResourceRequest($request, $response, 'openid')) {
  44. return;
  45. }
  46. $token = $this->getToken();
  47. $claims = $this->userClaimsStorage->getUserClaims($token['user_id'], $token['scope']);
  48. // The sub Claim MUST always be returned in the UserInfo Response.
  49. // http://openid.net/specs/openid-connect-core-1_0.html#UserInfoResponse
  50. $claims += array(
  51. 'sub' => $token['user_id'],
  52. );
  53. $response->addParameters($claims);
  54. }
  55. }