%PDF- %PDF-
Direktori : /home2/vacivi36/core/vendor/laravel/passport/src/Http/Middleware/ |
Current File : //home2/vacivi36/core/vendor/laravel/passport/src/Http/Middleware/CreateFreshApiToken.php |
<?php namespace Laravel\Passport\Http\Middleware; use Closure; use Illuminate\Http\JsonResponse; use Illuminate\Http\Response; use Laravel\Passport\ApiTokenCookieFactory; use Laravel\Passport\Passport; class CreateFreshApiToken { /** * The API token cookie factory instance. * * @var \Laravel\Passport\ApiTokenCookieFactory */ protected $cookieFactory; /** * The authentication guard. * * @var string */ protected $guard; /** * Create a new middleware instance. * * @param \Laravel\Passport\ApiTokenCookieFactory $cookieFactory * @return void */ public function __construct(ApiTokenCookieFactory $cookieFactory) { $this->cookieFactory = $cookieFactory; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = null) { $this->guard = $guard; $response = $next($request); if ($this->shouldReceiveFreshToken($request, $response)) { $response->withCookie($this->cookieFactory->make( $request->user($this->guard)->getAuthIdentifier(), $request->session()->token() )); } return $response; } /** * Determine if the given request should receive a fresh token. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Response $response * @return bool */ protected function shouldReceiveFreshToken($request, $response) { return $this->requestShouldReceiveFreshToken($request) && $this->responseShouldReceiveFreshToken($response); } /** * Determine if the request should receive a fresh token. * * @param \Illuminate\Http\Request $request * @return bool */ protected function requestShouldReceiveFreshToken($request) { return $request->isMethod('GET') && $request->user($this->guard); } /** * Determine if the response should receive a fresh token. * * @param \Illuminate\Http\Response $response * @return bool */ protected function responseShouldReceiveFreshToken($response) { return ($response instanceof Response || $response instanceof JsonResponse) && ! $this->alreadyContainsToken($response); } /** * Determine if the given response already contains an API token. * * This avoids us overwriting a just "refreshed" token. * * @param \Illuminate\Http\Response $response * @return bool */ protected function alreadyContainsToken($response) { foreach ($response->headers->getCookies() as $cookie) { if ($cookie->getName() === Passport::cookie()) { return true; } } return false; } }