<?php namespace Illuminate\Auth; use Illuminate\Contracts\Auth\Guard; use Illuminate\Contracts\Auth\UserProvider; use Illuminate\Http\Request; class TokenGuard implements Guard { use GuardHelpers; /** * The request instance. * * @var \Illuminate\Http\Request */ protected $request; /** * The name of the query string item from the request containing the API token. * * @var string */ protected $inputKey; /** * The name of the token "column" in persistent storage. * * @var string */ protected $storageKey; /** * Indicates if the API token is hashed in storage. * * @var bool */ protected $hash = false; /** * Create a new authentication guard. * * @param \Illuminate\Contracts\Auth\UserProvider $provider * @param \Illuminate\Http\Request $request * @param string $inputKey * @param string $storageKey * @param bool $hash * @return void */ public function __construct( UserProvider $provider, Request $request, $inputKey = 'api_token', $storageKey = 'api_token', $hash = false) { $this->hash = $hash; $this->request = $request; $this->provider = $provider; $this->inputKey = $inputKey; $this->storageKey = $storageKey; } /** * Get the currently authenticated user. * * @return \Illuminate\Contracts\Auth\Authenticatable|null */ public function user() { // If we've already retrieved the user for the current request we can just // return it back immediately. We do not want to fetch the user data on // every call to this method because that would be tremendously slow. if (! is_null($this->user)) { return $this->user; } $user = null; $token = $this->getTokenForRequest(); if (! empty($token)) { $user = $this->provider->retrieveByCredentials([ $this->storageKey => $this->hash ? hash('sha256', $token) : $token, ]); } return $this->user = $user; } /** * Get the token for the current request. * * @return string */ public function getTokenForRequest() { $token = $this->request->query($this->inputKey); if (empty($token)) { $token = $this->request->input($this->inputKey); } if (empty($token)) { $token = $this->request->bearerToken(); } if (empty($token)) { $token = $this->request->getPassword(); } return $token; } /** * Validate a user's credentials. * * @param array $credentials * @return bool */ public function validate(array $credentials = []) { if (empty($credentials[$this->inputKey])) { return false; } $credentials = [$this->storageKey => $credentials[$this->inputKey]]; if ($this->provider->retrieveByCredentials($credentials)) { return true; } return false; } /** * Set the current request instance. * * @param \Illuminate\Http\Request $request * @return $this */ public function setRequest(Request $request) { $this->request = $request; return $this; } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
Access | Folder | 0755 |
|
|
Console | Folder | 0755 |
|
|
Events | Folder | 0755 |
|
|
Listeners | Folder | 0755 |
|
|
Middleware | Folder | 0755 |
|
|
Notifications | Folder | 0755 |
|
|
Passwords | Folder | 0755 |
|
|
AuthManager.php | File | 8.25 KB | 0644 |
|
AuthServiceProvider.php | File | 3.04 KB | 0644 |
|
Authenticatable.php | File | 1.74 KB | 0644 |
|
AuthenticationException.php | File | 1.07 KB | 0644 |
|
CreatesUserProviders.php | File | 2.42 KB | 0644 |
|
DatabaseUserProvider.php | File | 4.6 KB | 0644 |
|
EloquentUserProvider.php | File | 6.18 KB | 0644 |
|
GenericUser.php | File | 2.49 KB | 0644 |
|
GuardHelpers.php | File | 2.54 KB | 0644 |
|
LICENSE.md | File | 1.05 KB | 0644 |
|
MustVerifyEmail.php | File | 979 B | 0644 |
|
Recaller.php | File | 1.83 KB | 0644 |
|
RequestGuard.php | File | 2.07 KB | 0644 |
|
SessionGuard.php | File | 26.48 KB | 0644 |
|
TokenGuard.php | File | 3.36 KB | 0644 |
|
composer.json | File | 1.24 KB | 0644 |
|