/**
  * Authorizes request
  *
  * @param IRequest $request
  * @param IUser $user   logged user
  *
  * @throws \OAuth2\Exception\InvalidClientException
  * @throws \OAuth2\Exception\InvalidRequestException
  * @throws \OAuth2\Exception\InvalidScopeException
  * @throws \OAuth2\Exception\UnauthorizedClientException
  * @return AuthorizationCodeSession
  */
 public function authorize(IRequest $request, IUser $user)
 {
     $requirements = parent::parseAuthorizationRequest($request, $user);
     // redirect uri is without authorization code!
     $authorizationCode = $this->authorizationCodeStorage->generate($user, $requirements['client'], $requirements['scopes'], $requirements['redirect_uri'], $requirements['state']);
     return new AuthorizationCodeSession($authorizationCode);
 }
 /**
  * Authorizes request
  *
  * @param IRequest $request
  * @param IUser $user logged user
  *
  * @throws \OAuth2\Exception\InvalidClientException
  * @throws \OAuth2\Exception\InvalidRequestException
  * @throws \OAuth2\Exception\InvalidScopeException
  * @throws \OAuth2\Exception\UnauthorizedClientException
  * @return AuthorizationCodeSession
  */
 public function authorize(IRequest $request, IUser $user)
 {
     $requirements = parent::parseAuthorizationRequest($request, $user);
     $accessToken = $this->accessTokenStorage->generate($user, $requirements['client'], $requirements['scopes']);
     return new ImplicitSession($accessToken, $this->tokenType->getName(), $requirements['redirect_uri'], $requirements['state']);
 }