Server IP : 66.29.132.124 / Your IP : 3.142.251.204 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 ArrayAccess; use BadMethodCallException; use Countable; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Contracts\Support\Jsonable; use Illuminate\Support\Arr; use JsonSerializable; use Tymon\JWTAuth\Claims\Claim; use Tymon\JWTAuth\Claims\Collection; use Tymon\JWTAuth\Exceptions\PayloadException; use Tymon\JWTAuth\Validators\PayloadValidator; class Payload implements ArrayAccess, Arrayable, Countable, Jsonable, JsonSerializable { /** * The collection of claims. * * @var \Tymon\JWTAuth\Claims\Collection */ private $claims; /** * Build the Payload. * * @param \Tymon\JWTAuth\Claims\Collection $claims * @param \Tymon\JWTAuth\Validators\PayloadValidator $validator * @param bool $refreshFlow * * @return void */ public function __construct(Collection $claims, PayloadValidator $validator, $refreshFlow = false) { $this->claims = $validator->setRefreshFlow($refreshFlow)->check($claims); } /** * Get the array of claim instances. * * @return \Tymon\JWTAuth\Claims\Collection */ public function getClaims() { return $this->claims; } /** * Checks if a payload matches some expected values. * * @param array $values * @param bool $strict * * @return bool */ public function matches(array $values, $strict = false) { if (empty($values)) { return false; } $claims = $this->getClaims(); foreach ($values as $key => $value) { if (! $claims->has($key) || ! $claims->get($key)->matches($value, $strict)) { return false; } } return true; } /** * Checks if a payload strictly matches some expected values. * * @param array $values * * @return bool */ public function matchesStrict(array $values) { return $this->matches($values, true); } /** * Get the payload. * * @param mixed $claim * * @return mixed */ public function get($claim = null) { $claim = value($claim); if ($claim !== null) { if (is_array($claim)) { return array_map([$this, 'get'], $claim); } return Arr::get($this->toArray(), $claim); } return $this->toArray(); } /** * Get the underlying Claim instance. * * @param string $claim * * @return \Tymon\JWTAuth\Claims\Claim */ public function getInternal($claim) { return $this->claims->getByClaimName($claim); } /** * Determine whether the payload has the claim (by instance). * * @param \Tymon\JWTAuth\Claims\Claim $claim * * @return bool */ public function has(Claim $claim) { return $this->claims->has($claim->getName()); } /** * Determine whether the payload has the claim (by key). * * @param string $claim * * @return bool */ public function hasKey($claim) { return $this->offsetExists($claim); } /** * Get the array of claims. * * @return array */ public function toArray() { return $this->claims->toPlainArray(); } /** * Convert the object into something JSON serializable. * * @return array */ public function jsonSerialize() { return $this->toArray(); } /** * Get the payload as JSON. * * @param int $options * * @return string */ public function toJson($options = JSON_UNESCAPED_SLASHES) { return json_encode($this->toArray(), $options); } /** * Get the payload as a string. * * @return string */ public function __toString() { return $this->toJson(); } /** * Determine if an item exists at an offset. * * @param mixed $key * * @return bool */ public function offsetExists($key) { return Arr::has($this->toArray(), $key); } /** * Get an item at a given offset. * * @param mixed $key * * @return mixed */ public function offsetGet($key) { return Arr::get($this->toArray(), $key); } /** * Don't allow changing the payload as it should be immutable. * * @param mixed $key * @param mixed $value * * @throws \Tymon\JWTAuth\Exceptions\PayloadException */ public function offsetSet($key, $value) { throw new PayloadException('The payload is immutable'); } /** * Don't allow changing the payload as it should be immutable. * * @param string $key * * @throws \Tymon\JWTAuth\Exceptions\PayloadException * * @return void */ public function offsetUnset($key) { throw new PayloadException('The payload is immutable'); } /** * Count the number of claims. * * @return int */ public function count() { return count($this->toArray()); } /** * Invoke the Payload as a callable function. * * @param mixed $claim * * @return mixed */ public function __invoke($claim = null) { return $this->get($claim); } /** * Magically get a claim value. * * @param string $method * @param array $parameters * * @throws \BadMethodCallException * * @return mixed */ public function __call($method, $parameters) { if (preg_match('/get(.+)\b/i', $method, $matches)) { foreach ($this->claims as $claim) { if (get_class($claim) === 'Tymon\\JWTAuth\\Claims\\'.$matches[1]) { return $claim->getValue(); } } } throw new BadMethodCallException(sprintf('The claim [%s] does not exist on the payload.', $method)); } }