AutorÃa | Ultima modificación | Ver Log |
<?phpnamespace Packback\Lti1p3;use Firebase\JWT\JWT;use Packback\Lti1p3\Interfaces\ILtiRegistration;class LtiDeepLink{public function __construct(private ILtiRegistration $registration,private string $deployment_id,private array $deep_link_settings) {}public function getResponseJwt(array $resources): string{$message_jwt = ['iss' => $this->registration->getClientId(),'aud' => [$this->registration->getIssuer()],'exp' => time() + 600,'iat' => time(),'nonce' => LtiOidcLogin::secureRandomString('nonce-'),LtiConstants::DEPLOYMENT_ID => $this->deployment_id,LtiConstants::MESSAGE_TYPE => LtiConstants::MESSAGE_TYPE_DEEPLINK_RESPONSE,LtiConstants::VERSION => LtiConstants::V1_3,LtiConstants::DL_CONTENT_ITEMS => array_map(function ($resource) {return $resource->toArray();}, $resources),];// https://www.imsglobal.org/spec/lti-dl/v2p0/#deep-linking-request-message// 'data' is an optional property which, if it exists, must be returned by the toolif (isset($this->deep_link_settings['data'])) {$message_jwt[LtiConstants::DL_DATA] = $this->deep_link_settings['data'];}return JWT::encode($message_jwt, $this->registration->getToolPrivateKey(), 'RS256', $this->registration->getKid());}}