ltijs
Version:
Easily turn your web application into a LTI 1.3 Learning Tool.
104 lines • 4.64 kB
JavaScript
"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