Skip to content
Snippets Groups Projects
Select Git revision
  • dd6c80b4f1bb5cb14aed146ea63b5a4793338e05
  • master default
  • rocky-linux-9
  • development
  • v1.0.4
  • v1.0.3
  • v1.0.2
7 results

IdTokenBuilder.php

Blame
  • IdTokenBuilder.php 1.32 KiB
    <?php
    
    namespace RAP;
    
    use \Firebase\JWT\JWT;
    
    class IdTokenBuilder {
    
        private $locator;
    
        public function __construct(Locator $locator) {
            $this->locator = $locator;
        }
    
        public function getIdToken(AccessToken $accessToken): string {
    
            $keyPair = $this->locator->getJWKSDAO()->getNewestKeyPair();
    
            $payload = $this->createPayloadArray($accessToken);
    
            return JWT::encode($payload, $keyPair->privateKey, $keyPair->alg, $keyPair->keyId);
        }
    
        private function createPayloadArray(AccessToken $accessToken) {
    
            $user = $this->locator->getUserDAO()->findUserById($accessToken->userId);
    
            $payloadArr = array(
                'iss' => $this->locator->config->jwtIssuer,
                'sub' => $user->id,
                'iat' => time(),
                'exp' => time() + 3600,
                'name' => $user->getCompleteName()
            );
    
            if (in_array("email", $accessToken->scope)) {
                $payloadArr['email'] = $user->getPrimaryEmail();
            }
            if (in_array("profile", $accessToken->scope)) {
                $payloadArr['given_name'] = $user->getName();
                $payloadArr['family_name'] = $user->getSurname();
                if ($user->getInstitution() !== null) {
                    $payloadArr['org'] = $user->getInstitution();
                }
            }
    
            return $payloadArr;
        }
    
    }