%PDF- %PDF-
Direktori : /home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-tokens/src/ |
Current File : //home/bitrix/www/local/php_interface/lib/vendor/kreait/firebase-tokens/src/Generator.php |
<?php namespace Firebase\Auth\Token; use Lcobucci\JWT\Builder; use Lcobucci\JWT\Signer; use Lcobucci\JWT\Signer\Rsa\Sha256; use Lcobucci\JWT\Token; final class Generator implements Domain\Generator { /** * @var string */ private $clientEmail; /** * @var string */ private $privateKey; /** * @var Builder */ private $builder; /** * @var Signer */ private $signer; public function __construct( string $clientEmail, string $privateKey, Signer $signer = null ) { $this->clientEmail = $clientEmail; $this->privateKey = $privateKey; $this->builder = $this->createBuilder(); $this->signer = $signer ?: new Sha256(); } /** * Returns a token for the given user and claims. * * @param mixed $uid * @param array $claims * @param \DateTimeInterface $expiresAt * * @throws \BadMethodCallException when a claim is invalid * * @return Token */ public function createCustomToken($uid, array $claims = [], \DateTimeInterface $expiresAt = null): Token { if (count($claims)) { $this->builder->set('claims', $claims); } $this->builder->set('uid', (string) $uid); $now = time(); $expiration = $expiresAt ? $expiresAt->getTimestamp() : $now + (60 * 60); $token = $this->builder ->setIssuedAt($now) ->setExpiration($expiration) ->sign($this->signer, $this->privateKey) ->getToken(); $this->builder->unsign(); return $token; } private function createBuilder(): Builder { return (new Builder()) ->setIssuer($this->clientEmail) ->setSubject($this->clientEmail) ->setAudience('https://identitytoolkit.googleapis.com/google.identity.identitytoolkit.v1.IdentityToolkit'); } }