/** * Do authorization. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function postIndex(Request $request) { $server = new AuthorizationServer(); $server->setSessionStorage(new SessionStorage()); $server->setAccessTokenStorage(new AccessTokenStorage()); $server->setClientStorage(new ClientStorage()); $server->setScopeStorage(new ScopeStorage()); $server->setRefreshTokenStorage(new RefreshTokenStorage()); $server->addGrantType(new ClientCredentials()); $server->addGrantType(new RefreshToken()); $server->setTokenType(new Bearer()); try { $accessToken = $server->issueAccessToken(); $response = new Response($accessToken, 200, ['Cache-Control' => 'no-store', 'Pragma' => 'no-store']); } catch (OAuthException $e) { $response = new Response(['error' => $e->errorType, 'message' => $e->getMessage()], $e->httpStatusCode, $e->getHttpHeaders()); } catch (\Exception $e) { $response = new Response(['error' => $e->getCode(), 'message' => $e->getMessage()], 500); } finally { // Return the response $response->headers->set('Content-type', 'application/json'); return $response; } // TO DO: Remove previous active access token for current client }
/** * Do client authorization based on user login. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function completeAuthorizationFlow(Request $request, User $user) { // First create OAuth Auth Code $server = new AuthorizationServer(); $server->setSessionStorage(new SessionStorage()); $server->setAccessTokenStorage(new AccessTokenStorage()); $server->setClientStorage(new ClientStorage()); $server->setScopeStorage(new ScopeStorage()); $server->setAuthCodeStorage(new AuthCodeStorage()); $server->setRefreshTokenStorage(new RefreshTokenStorage()); $server->addGrantType(new AuthCode()); $server->addGrantType(new RefreshToken()); $server->setTokenType(new Bearer()); $identifiedOAuth = $request->get('identified_oauth'); $authParams = ['client' => $identifiedOAuth['client'], 'redirect_uri' => $identifiedOAuth['client']->getRedirectUri(), 'scopes' => $identifiedOAuth['scopes'], 'state' => time()]; $redirectUri = $server->getGrantType('authorization_code')->newAuthorizeRequest('user', $user->id, $authParams); parse_str(parse_url($redirectUri, PHP_URL_QUERY), $queryStr); // Complete the OAuth Auth flow $server->getRequest()->request->set('grant_type', 'authorization_code'); $server->getRequest()->request->set('client_id', $identifiedOAuth['client']->getId()); $server->getRequest()->request->set('client_secret', $identifiedOAuth['client']->getSecret()); $server->getRequest()->request->set('redirect_uri', $identifiedOAuth['client']->getRedirectUri()); $server->getRequest()->request->set('code', $queryStr['code']); try { $accessToken = $server->issueAccessToken(); $response = new Response($accessToken, 200, ['Cache-Control' => 'no-store', 'Pragma' => 'no-store']); } catch (OAuthException $e) { $response = new Response(['error' => $e->errorType, 'message' => $e->getMessage()], $e->httpStatusCode, $e->getHttpHeaders()); } catch (\Exception $e) { $response = new Response(['error' => $e->getCode(), 'message' => $e->getMessage()], 500); } finally { // Return the response $response->headers->set('Content-type', 'application/json'); return $response; } // TO DO: Remove previous active access token for current client }
/** * Set the token type to use. * * @param \League\OAuth2\Server\TokenType\TokenTypeInterface $tokenType */ public function setTokenType(TokenTypeInterface $tokenType) { $this->issuer->setTokenType($tokenType); $this->checker->setTokenType($tokenType); }