Server IP : 66.29.132.124 / Your IP : 3.145.170.164 Web Server : LiteSpeed System : Linux business141.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : wavevlvu ( 1524) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/wavevlvu/book24.ng/vendor/tymon/jwt-auth/src/ |
Upload File : |
<?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\Claims\Claim; use Tymon\JWTAuth\Claims\Collection; use Tymon\JWTAuth\Claims\Factory as ClaimFactory; use Tymon\JWTAuth\Support\CustomClaims; use Tymon\JWTAuth\Support\RefreshFlow; use Tymon\JWTAuth\Validators\PayloadValidator; class Factory { use CustomClaims, RefreshFlow; /** * The claim factory. * * @var \Tymon\JWTAuth\Claims\Factory */ protected $claimFactory; /** * The validator. * * @var \Tymon\JWTAuth\Validators\PayloadValidator */ protected $validator; /** * The default claims. * * @var array */ protected $defaultClaims = [ 'iss', 'iat', 'exp', 'nbf', 'jti', ]; /** * The claims collection. * * @var \Tymon\JWTAuth\Claims\Collection */ protected $claims; /** * Constructor. * * @param \Tymon\JWTAuth\Claims\Factory $claimFactory * @param \Tymon\JWTAuth\Validators\PayloadValidator $validator * * @return void */ public function __construct(ClaimFactory $claimFactory, PayloadValidator $validator) { $this->claimFactory = $claimFactory; $this->validator = $validator; $this->claims = new Collection; } /** * Create the Payload instance. * * @param bool $resetClaims * * @return \Tymon\JWTAuth\Payload */ public function make($resetClaims = false) { if ($resetClaims) { $this->emptyClaims(); } return $this->withClaims($this->buildClaimsCollection()); } /** * Empty the claims collection. * * @return $this */ public function emptyClaims() { $this->claims = new Collection; return $this; } /** * Add an array of claims to the Payload. * * @param array $claims * * @return $this */ protected function addClaims(array $claims) { foreach ($claims as $name => $value) { $this->addClaim($name, $value); } return $this; } /** * Add a claim to the Payload. * * @param string $name * @param mixed $value * * @return $this */ protected function addClaim($name, $value) { $this->claims->put($name, $value); return $this; } /** * Build the default claims. * * @return $this */ protected function buildClaims() { // remove the exp claim if it exists and the ttl is null if ($this->claimFactory->getTTL() === null && $key = array_search('exp', $this->defaultClaims)) { unset($this->defaultClaims[$key]); } // add the default claims foreach ($this->defaultClaims as $claim) { $this->addClaim($claim, $this->claimFactory->make($claim)); } // add custom claims on top, allowing them to overwrite defaults return $this->addClaims($this->getCustomClaims()); } /** * Build out the Claim DTO's. * * @return \Tymon\JWTAuth\Claims\Collection */ protected function resolveClaims() { return $this->claims->map(function ($value, $name) { return $value instanceof Claim ? $value : $this->claimFactory->get($name, $value); }); } /** * Build and get the Claims Collection. * * @return \Tymon\JWTAuth\Claims\Collection */ public function buildClaimsCollection() { return $this->buildClaims()->resolveClaims(); } /** * Get a Payload instance with a claims collection. * * @param \Tymon\JWTAuth\Claims\Collection $claims * * @return \Tymon\JWTAuth\Payload */ public function withClaims(Collection $claims) { return new Payload($claims, $this->validator, $this->refreshFlow); } /** * Set the default claims to be added to the Payload. * * @param array $claims * * @return $this */ public function setDefaultClaims(array $claims) { $this->defaultClaims = $claims; return $this; } /** * Helper to set the ttl. * * @param int $ttl * * @return $this */ public function setTTL($ttl) { $this->claimFactory->setTTL($ttl); return $this; } /** * Helper to get the ttl. * * @return int */ public function getTTL() { return $this->claimFactory->getTTL(); } /** * Get the default claims. * * @return array */ public function getDefaultClaims() { return $this->defaultClaims; } /** * Get the PayloadValidator instance. * * @return \Tymon\JWTAuth\Validators\PayloadValidator */ public function validator() { return $this->validator; } /** * Magically add a claim. * * @param string $method * @param array $parameters * * @return $this */ public function __call($method, $parameters) { $this->addClaim($method, $parameters[0]); return $this; } }