[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: Factory.php
<?php /* * This file is part of jwt-auth. * * (c) 2014-2021 Sean Tymon <tymon148@gmail.com> * (c) 2021 PHP Open Source Saver * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace PHPOpenSourceSaver\JWTAuth; use PHPOpenSourceSaver\JWTAuth\Claims\Claim; use PHPOpenSourceSaver\JWTAuth\Claims\Collection; use PHPOpenSourceSaver\JWTAuth\Claims\Factory as ClaimFactory; use PHPOpenSourceSaver\JWTAuth\Support\CustomClaims; use PHPOpenSourceSaver\JWTAuth\Support\RefreshFlow; use PHPOpenSourceSaver\JWTAuth\Validators\PayloadValidator; class Factory { use CustomClaims; use RefreshFlow; /** * The claim factory. * * @var ClaimFactory */ protected $claimFactory; /** * The validator. * * @var PayloadValidator */ protected $validator; /** * The default claims. * * @var array */ protected $defaultClaims = [ 'iss', 'iat', 'exp', 'nbf', 'jti', ]; /** * The claims collection. * * @var Collection */ protected $claims; /** * Constructor. * * @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 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. * * @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 (null === $this->claimFactory->getTTL() && $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 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 Collection */ public function buildClaimsCollection() { return $this->buildClaims()->resolveClaims(); } /** * Get a Payload instance with a claims collection. * * @return Payload */ public function withClaims(Collection $claims) { return new Payload($claims, $this->validator, $this->refreshFlow); } /** * Set the default claims to be added to the Payload. * * @return $this */ public function setDefaultClaims(array $claims) { $this->defaultClaims = $claims; return $this; } /** * Helper to set the ttl. * * @param int|null $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 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; } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.77 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002