ltijs
Version:
Turn your application into a fully integratable LTI 1.3 tool or platform.
33 lines (29 loc) • 1.06 kB
JavaScript
;
/* Handle Requests */
const crypto = require('crypto');
class Request {
/**
* @description Handles the Lti 1.3 initial login flow (OIDC protocol).
* @param {object} request - Login request object sent by consumer.
* @param {object} platform - Platform Object.
* @param {String} state - State parameter, used to validate the response.
*/
static async ltiAdvantageLogin(request, platform, state) {
const query = {
response_type: 'id_token',
response_mode: 'form_post',
id_token_signed_response_alg: 'RS256',
scope: 'openid',
client_id: await platform.platformClientId(),
redirect_uri: request.target_link_uri,
login_hint: request.login_hint,
nonce: crypto.randomBytes(16).toString('base64'),
prompt: 'none',
state: state
};
if (request.lti_message_hint) query.lti_message_hint = request.lti_message_hint;
if (request.lti_deployment_id) query.lti_deployment_id = request.lti_deployment_id;
return query;
}
}
module.exports = Request;