UNPKG

ltijs

Version:

Easily turn your web application into a LTI 1.3 Learning Tool.

104 lines • 4.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildIdToken = buildIdToken; exports.buildLegacyIdToken = buildLegacyIdToken; const id_token_constants_1 = require("#services/launch/id-token.constants"); const freeze_1 = require("#utils/objects/freeze"); function buildIdToken(record) { return (0, freeze_1.deepFreeze)({ id: record.id, ltiVersion: record[id_token_constants_1.IdTokenClaim.Version], user: buildUserInfo(record), platform: buildPlatformInfo(record), launch: buildLaunchInfo(record), services: buildServicesInfo(record), }); } function buildLegacyIdToken(record) { const resource = record[id_token_constants_1.IdTokenClaim.ResourceLink]; const namesRoles = record[id_token_constants_1.IdTokenClaim.NamesRoleService]; const contextId = record[id_token_constants_1.IdTokenClaim.Context]?.id; return (0, freeze_1.deepFreeze)({ iss: record.iss, user: record.sub, clientId: record.client_id, deploymentId: record[id_token_constants_1.IdTokenClaim.DeploymentId], platformContext: { contextId, resource, namesRoles }, }); } function buildUserInfo(record) { return { id: record.sub, name: record.name, email: record.email, givenName: record.given_name, familyName: record.family_name, roles: record[id_token_constants_1.IdTokenClaim.Roles], roleScopeMentor: record[id_token_constants_1.IdTokenClaim.RoleScopeMentor], }; } function buildPlatformInfo(record) { const toolPlatform = record[id_token_constants_1.IdTokenClaim.ToolPlatform]; return { id: record.platform_id, url: record.iss, clientId: record.client_id, deploymentId: record[id_token_constants_1.IdTokenClaim.DeploymentId], name: toolPlatform?.name, description: toolPlatform?.description, guid: toolPlatform?.guid, contactEmail: toolPlatform?.contact_email, version: toolPlatform?.version, productFamilyCode: toolPlatform?.product_family_code, lis: record[id_token_constants_1.IdTokenClaim.Lis], }; } function buildLaunchInfo(record) { const launchPresentation = record[id_token_constants_1.IdTokenClaim.LaunchPresentation]; return { type: record[id_token_constants_1.IdTokenClaim.MessageType], target: record[id_token_constants_1.IdTokenClaim.TargetLinkUri], context: record[id_token_constants_1.IdTokenClaim.Context], resource: record[id_token_constants_1.IdTokenClaim.ResourceLink], custom: record[id_token_constants_1.IdTokenClaim.Custom], presentation: launchPresentation === undefined ? undefined : { documentTarget: launchPresentation.document_target, width: launchPresentation.width, height: launchPresentation.height, returnUrl: launchPresentation.return_url, locale: launchPresentation.locale, }, }; } function buildServicesInfo(record) { const assignmentAndGradesSettings = record[id_token_constants_1.IdTokenClaim.Endpoint]; const deepLinkingSettings = record[id_token_constants_1.IdTokenClaim.DeepLinkingSettings]; const namesAndRolesSettings = record[id_token_constants_1.IdTokenClaim.NamesRoleService]; return { namesAndRoles: { available: namesAndRolesSettings !== undefined }, assignmentAndGrades: assignmentAndGradesSettings === undefined ? { available: false } : { available: true, lineItemId: assignmentAndGradesSettings.lineitem === '' ? undefined : assignmentAndGradesSettings.lineitem, scopes: assignmentAndGradesSettings.scope, }, deepLinking: deepLinkingSettings === undefined ? { available: false } : { available: true, acceptTypes: deepLinkingSettings.accept_types, acceptMediaTypes: deepLinkingSettings.accept_media_types, acceptPresentationDocumentTargets: deepLinkingSettings.accept_presentation_document_targets, acceptMultiple: deepLinkingSettings.accept_multiple, autoCreate: deepLinkingSettings.auto_create, title: deepLinkingSettings.title, text: deepLinkingSettings.text, data: deepLinkingSettings.data, deepLinkReturnUrl: deepLinkingSettings.deep_link_return_url, }, }; } //# sourceMappingURL=id-token.serializer.js.map