Laravel version update
Laravel version update
This commit is contained in:
239
vendor/tymon/jwt-auth/src/Manager.php
vendored
Normal file
239
vendor/tymon/jwt-auth/src/Manager.php
vendored
Normal file
@@ -0,0 +1,239 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of jwt-auth.
|
||||
*
|
||||
* (c) Sean Tymon <tymon148@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Tymon\JWTAuth;
|
||||
|
||||
use Tymon\JWTAuth\Support\RefreshFlow;
|
||||
use Tymon\JWTAuth\Support\CustomClaims;
|
||||
use Tymon\JWTAuth\Exceptions\JWTException;
|
||||
use Tymon\JWTAuth\Exceptions\TokenBlacklistedException;
|
||||
use Tymon\JWTAuth\Contracts\Providers\JWT as JWTContract;
|
||||
|
||||
class Manager
|
||||
{
|
||||
use CustomClaims, RefreshFlow;
|
||||
|
||||
/**
|
||||
* The provider.
|
||||
*
|
||||
* @var \Tymon\JWTAuth\Contracts\Providers\JWT
|
||||
*/
|
||||
protected $provider;
|
||||
|
||||
/**
|
||||
* The blacklist.
|
||||
*
|
||||
* @var \Tymon\JWTAuth\Blacklist
|
||||
*/
|
||||
protected $blacklist;
|
||||
|
||||
/**
|
||||
* the payload factory.
|
||||
*
|
||||
* @var \Tymon\JWTAuth\Factory
|
||||
*/
|
||||
protected $payloadFactory;
|
||||
|
||||
/**
|
||||
* The blacklist flag.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $blacklistEnabled = true;
|
||||
|
||||
/**
|
||||
* the persistent claims.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $persistentClaims = [];
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param \Tymon\JWTAuth\Contracts\Providers\JWT $provider
|
||||
* @param \Tymon\JWTAuth\Blacklist $blacklist
|
||||
* @param \Tymon\JWTAuth\Factory $payloadFactory
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(JWTContract $provider, Blacklist $blacklist, Factory $payloadFactory)
|
||||
{
|
||||
$this->provider = $provider;
|
||||
$this->blacklist = $blacklist;
|
||||
$this->payloadFactory = $payloadFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Encode a Payload and return the Token.
|
||||
*
|
||||
* @param \Tymon\JWTAuth\Payload $payload
|
||||
*
|
||||
* @return \Tymon\JWTAuth\Token
|
||||
*/
|
||||
public function encode(Payload $payload)
|
||||
{
|
||||
$token = $this->provider->encode($payload->get());
|
||||
|
||||
return new Token($token);
|
||||
}
|
||||
|
||||
/**
|
||||
* Decode a Token and return the Payload.
|
||||
*
|
||||
* @param \Tymon\JWTAuth\Token $token
|
||||
* @param bool $checkBlacklist
|
||||
*
|
||||
* @throws \Tymon\JWTAuth\Exceptions\TokenBlacklistedException
|
||||
*
|
||||
* @return \Tymon\JWTAuth\Payload
|
||||
*/
|
||||
public function decode(Token $token, $checkBlacklist = true)
|
||||
{
|
||||
$payloadArray = $this->provider->decode($token->get());
|
||||
|
||||
$payload = $this->payloadFactory
|
||||
->setRefreshFlow($this->refreshFlow)
|
||||
->customClaims($payloadArray)
|
||||
->make();
|
||||
|
||||
if ($checkBlacklist && $this->blacklistEnabled && $this->blacklist->has($payload)) {
|
||||
throw new TokenBlacklistedException('The token has been blacklisted');
|
||||
}
|
||||
|
||||
return $payload;
|
||||
}
|
||||
|
||||
/**
|
||||
* Refresh a Token and return a new Token.
|
||||
*
|
||||
* @param \Tymon\JWTAuth\Token $token
|
||||
* @param bool $forceForever
|
||||
* @param bool $resetClaims
|
||||
*
|
||||
* @return \Tymon\JWTAuth\Token
|
||||
*/
|
||||
public function refresh(Token $token, $forceForever = false, $resetClaims = false)
|
||||
{
|
||||
$this->setRefreshFlow();
|
||||
|
||||
$claims = $this->buildRefreshClaims($this->decode($token));
|
||||
|
||||
if ($this->blacklistEnabled) {
|
||||
// Invalidate old token
|
||||
$this->invalidate($token, $forceForever);
|
||||
}
|
||||
|
||||
// Return the new token
|
||||
return $this->encode(
|
||||
$this->payloadFactory->customClaims($claims)->make($resetClaims)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Invalidate a Token by adding it to the blacklist.
|
||||
*
|
||||
* @param \Tymon\JWTAuth\Token $token
|
||||
* @param bool $forceForever
|
||||
*
|
||||
* @throws \Tymon\JWTAuth\Exceptions\JWTException
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function invalidate(Token $token, $forceForever = false)
|
||||
{
|
||||
if (! $this->blacklistEnabled) {
|
||||
throw new JWTException('You must have the blacklist enabled to invalidate a token.');
|
||||
}
|
||||
|
||||
return call_user_func(
|
||||
[$this->blacklist, $forceForever ? 'addForever' : 'add'],
|
||||
$this->decode($token, false)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build the claims to go into the refreshed token.
|
||||
*
|
||||
* @param \Tymon\JWTAuth\Payload $payload
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function buildRefreshClaims(Payload $payload)
|
||||
{
|
||||
// assign the payload values as variables for use later
|
||||
extract($payload->toArray());
|
||||
|
||||
// persist the relevant claims
|
||||
return array_merge(
|
||||
$this->customClaims,
|
||||
compact($this->persistentClaims, 'sub', 'iat')
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Payload Factory instance.
|
||||
*
|
||||
* @return \Tymon\JWTAuth\Factory
|
||||
*/
|
||||
public function getPayloadFactory()
|
||||
{
|
||||
return $this->payloadFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the JWTProvider instance.
|
||||
*
|
||||
* @return \Tymon\JWTAuth\Contracts\Providers\JWT
|
||||
*/
|
||||
public function getJWTProvider()
|
||||
{
|
||||
return $this->provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Blacklist instance.
|
||||
*
|
||||
* @return \Tymon\JWTAuth\Blacklist
|
||||
*/
|
||||
public function getBlacklist()
|
||||
{
|
||||
return $this->blacklist;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether the blacklist is enabled.
|
||||
*
|
||||
* @param bool $enabled
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setBlacklistEnabled($enabled)
|
||||
{
|
||||
$this->blacklistEnabled = $enabled;
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the claims to be persisted when refreshing a token.
|
||||
*
|
||||
* @param array $claims
|
||||
*
|
||||
* @return $this
|
||||
*/
|
||||
public function setPersistentClaims(array $claims)
|
||||
{
|
||||
$this->persistentClaims = $claims;
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user