Update v1.0.6
This commit is contained in:
		
							
								
								
									
										238
									
								
								vendor/tymon/jwt-auth/src/PayloadFactory.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										238
									
								
								vendor/tymon/jwt-auth/src/PayloadFactory.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,238 @@ | ||||
| <?php | ||||
|  | ||||
| namespace Tymon\JWTAuth; | ||||
|  | ||||
| use Illuminate\Http\Request; | ||||
| use Tymon\JWTAuth\Claims\Factory; | ||||
| use Tymon\JWTAuth\Validators\PayloadValidator; | ||||
|  | ||||
| class PayloadFactory | ||||
| { | ||||
|     /** | ||||
|      * @var \Tymon\JWTAuth\Claims\Factory | ||||
|      */ | ||||
|     protected $claimFactory; | ||||
|  | ||||
|     /** | ||||
|      * @var \Illuminate\Http\Request | ||||
|      */ | ||||
|     protected $request; | ||||
|  | ||||
|     /** | ||||
|      * @var \Tymon\JWTAuth\Validators\PayloadValidator | ||||
|      */ | ||||
|     protected $validator; | ||||
|  | ||||
|     /** | ||||
|      * @var int | ||||
|      */ | ||||
|     protected $ttl = 60; | ||||
|  | ||||
|     /** | ||||
|      * @var boolean | ||||
|      */ | ||||
|     protected $refreshFlow = false; | ||||
|  | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     protected $defaultClaims = ['iss', 'iat', 'exp', 'nbf', 'jti']; | ||||
|  | ||||
|     /** | ||||
|      * @var array | ||||
|      */ | ||||
|     protected $claims = []; | ||||
|  | ||||
|     /** | ||||
|      * @param \Tymon\JWTAuth\Claims\Factory  $claimFactory | ||||
|      * @param \Illuminate\Http\Request  $request | ||||
|      * @param \Tymon\JWTAuth\Validators\PayloadValidator  $validator | ||||
|      */ | ||||
|     public function __construct(Factory $claimFactory, Request $request, PayloadValidator $validator) | ||||
|     { | ||||
|         $this->claimFactory = $claimFactory; | ||||
|         $this->request = $request; | ||||
|         $this->validator = $validator; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Create the Payload instance | ||||
|      * | ||||
|      * @param  array  $customClaims | ||||
|      * @return \Tymon\JWTAuth\Payload | ||||
|      */ | ||||
|     public function make(array $customClaims = []) | ||||
|     { | ||||
|         $claims = $this->buildClaims($customClaims)->resolveClaims(); | ||||
|  | ||||
|         return new Payload($claims, $this->validator, $this->refreshFlow); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Add an array of claims to the Payload | ||||
|      * | ||||
|      * @param  array  $claims | ||||
|      * @return $this | ||||
|      */ | ||||
|     public 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 | ||||
|      */ | ||||
|     public function addClaim($name, $value) | ||||
|     { | ||||
|         $this->claims[$name] = $value; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Build the default claims | ||||
|      * | ||||
|      * @param  array  $customClaims | ||||
|      * @return $this | ||||
|      */ | ||||
|     protected function buildClaims(array $customClaims) | ||||
|     { | ||||
|         // add any custom claims first | ||||
|         $this->addClaims(array_diff_key($customClaims, $this->defaultClaims)); | ||||
|  | ||||
|         foreach ($this->defaultClaims as $claim) { | ||||
|             if (! array_key_exists($claim, $customClaims)) { | ||||
|                 $this->addClaim($claim, $this->$claim()); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Build out the Claim DTO's | ||||
|      * | ||||
|      * @return array | ||||
|      */ | ||||
|     public function resolveClaims() | ||||
|     { | ||||
|         $resolved = []; | ||||
|         foreach ($this->claims as $name => $value) { | ||||
|             $resolved[] = $this->claimFactory->get($name, $value); | ||||
|         } | ||||
|  | ||||
|         return $resolved; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the Issuer (iss) claim | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     public function iss() | ||||
|     { | ||||
|         return $this->request->url(); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the Issued At (iat) claim | ||||
|      * | ||||
|      * @return int | ||||
|      */ | ||||
|     public function iat() | ||||
|     { | ||||
|         return (int) Utils::now()->format('U'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the Expiration (exp) claim | ||||
|      * | ||||
|      * @return int | ||||
|      */ | ||||
|     public function exp() | ||||
|     { | ||||
|         return (int) Utils::now()->addMinutes($this->ttl)->format('U'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the Not Before (nbf) claim | ||||
|      * | ||||
|      * @return int | ||||
|      */ | ||||
|     public function nbf() | ||||
|     { | ||||
|         return (int) Utils::now()->format('U'); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set a unique id (jti) for the token | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     protected function jti() | ||||
|     { | ||||
|         $sub = array_get($this->claims, 'sub', ''); | ||||
|         $nbf = array_get($this->claims, 'nbf', ''); | ||||
|  | ||||
|         return md5(sprintf('jti.%s.%s', $sub, $nbf)); | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the token ttl (in minutes) | ||||
|      * | ||||
|      * @param  int  $ttl | ||||
|      * @return $this | ||||
|      */ | ||||
|     public function setTTL($ttl) | ||||
|     { | ||||
|         $this->ttl = $ttl; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Get the token ttl | ||||
|      * | ||||
|      * @return int | ||||
|      */ | ||||
|     public function getTTL() | ||||
|     { | ||||
|         return $this->ttl; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Set the refresh flow | ||||
|      * | ||||
|      * @param boolean $refreshFlow | ||||
|      * @return $this | ||||
|      */ | ||||
|     public function setRefreshFlow($refreshFlow = true) | ||||
|     { | ||||
|         $this->refreshFlow = $refreshFlow; | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
|  | ||||
|     /** | ||||
|      * Magically add a claim | ||||
|      * | ||||
|      * @param  string  $method | ||||
|      * @param  array   $parameters | ||||
|      * @return PayloadFactory | ||||
|      * @throws \BadMethodCallException | ||||
|      */ | ||||
|     public function __call($method, $parameters) | ||||
|     { | ||||
|         $this->addClaim($method, $parameters[0]); | ||||
|  | ||||
|         return $this; | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Bhanu Slathia
					Bhanu Slathia