%PDF- %PDF-
Direktori : /home2/vacivi36/core/vendor/laravel/passport/src/Http/Controllers/ |
Current File : //home2/vacivi36/core/vendor/laravel/passport/src/Http/Controllers/AuthorizationController.php |
<?php namespace Laravel\Passport\Http\Controllers; use Illuminate\Contracts\Routing\ResponseFactory; use Illuminate\Http\Request; use Illuminate\Support\Str; use Laravel\Passport\Bridge\User; use Laravel\Passport\ClientRepository; use Laravel\Passport\Passport; use Laravel\Passport\TokenRepository; use League\OAuth2\Server\AuthorizationServer; use Nyholm\Psr7\Response as Psr7Response; use Psr\Http\Message\ServerRequestInterface; class AuthorizationController { use HandlesOAuthErrors; /** * The authorization server. * * @var \League\OAuth2\Server\AuthorizationServer */ protected $server; /** * The response factory implementation. * * @var \Illuminate\Contracts\Routing\ResponseFactory */ protected $response; /** * Create a new controller instance. * * @param \League\OAuth2\Server\AuthorizationServer $server * @param \Illuminate\Contracts\Routing\ResponseFactory $response * @return void */ public function __construct(AuthorizationServer $server, ResponseFactory $response) { $this->server = $server; $this->response = $response; } /** * Authorize a client to access the user's account. * * @param \Psr\Http\Message\ServerRequestInterface $psrRequest * @param \Illuminate\Http\Request $request * @param \Laravel\Passport\ClientRepository $clients * @param \Laravel\Passport\TokenRepository $tokens * @return \Illuminate\Http\Response */ public function authorize(ServerRequestInterface $psrRequest, Request $request, ClientRepository $clients, TokenRepository $tokens) { $authRequest = $this->withErrorHandling(function () use ($psrRequest) { return $this->server->validateAuthorizationRequest($psrRequest); }); $scopes = $this->parseScopes($authRequest); $token = $tokens->findValidToken( $user = $request->user(), $client = $clients->find($authRequest->getClient()->getIdentifier()) ); if (($token && $token->scopes === collect($scopes)->pluck('id')->all()) || $client->skipsAuthorization()) { return $this->approveRequest($authRequest, $user); } $request->session()->put('authToken', $authToken = Str::random()); $request->session()->put('authRequest', $authRequest); return $this->response->view('passport::authorize', [ 'client' => $client, 'user' => $user, 'scopes' => $scopes, 'request' => $request, 'authToken' => $authToken, ]); } /** * Transform the authorization requests's scopes into Scope instances. * * @param \League\OAuth2\Server\RequestTypes\AuthorizationRequest $authRequest * @return array */ protected function parseScopes($authRequest) { return Passport::scopesFor( collect($authRequest->getScopes())->map(function ($scope) { return $scope->getIdentifier(); })->unique()->all() ); } /** * Approve the authorization request. * * @param \League\OAuth2\Server\RequestTypes\AuthorizationRequest $authRequest * @param \Illuminate\Database\Eloquent\Model $user * @return \Illuminate\Http\Response */ protected function approveRequest($authRequest, $user) { $authRequest->setUser(new User($user->getAuthIdentifier())); $authRequest->setAuthorizationApproved(true); return $this->withErrorHandling(function () use ($authRequest) { return $this->convertResponse( $this->server->completeAuthorizationRequest($authRequest, new Psr7Response) ); }); } }