X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Ftemplate%2Fotp-html.js;h=5777d3981219ad1ba851e7001f98b8b3b3bfe4ae;hb=HEAD;hp=066acce57ac308da62d4988c3cf3c4bc62f4e726;hpb=53ef948ea83106e82d55e60d6695a15e94bf725e;p=squeep-authentication-module diff --git a/lib/template/otp-html.js b/lib/template/otp-html.js index 066acce..5777d39 100644 --- a/lib/template/otp-html.js +++ b/lib/template/otp-html.js @@ -1,11 +1,33 @@ 'use strict'; const { TemplateHelper: th } = require('@squeep/html-template-helper'); +const { sessionNavLinks } = require('./helpers'); + +/** + * @typedef {object} Context + * @property {string[]=} otpBlurb content accompanying otp entry + * @property {string} otpState packed otp state + */ + +/** + * @alias {object} HtmlOptions + */ + +/** + * @typedef {import('../session-manager').AppTemplateCallback} AppTemplateCallback + */ + /** * Login form, continued. */ +/** + * + * @param {Context} ctx context + * @param {HtmlOptions} options htmlOptions + * @returns {string} section + */ function otpSection(ctx, options) { const otpBlurb = (options.otpBlurb || []).map((x) => '\t'.repeat(6) + x).join('\n'); return `\t\t\t
@@ -26,29 +48,32 @@ ${otpBlurb} /** * Render 2fs form. - * @param {Object} ctx - * @param {String[]=} ctx.errors - * @param {String} ctx.otpState - * @param {Object} options - * @param {String[]=} options.authenticator.otpBlurb - * @param {String[]=} options.authenticator.loginBlurb - * @param {Object} options.manager - * @param {String} options.manager.pageTitle - * @param {String=} options.manager.logoUrl - * @param {Object} options.dingus - * @param {String} options.dingus.selfBaseUrl - * @returns {String} + * @param {Context} ctx context + * @param {object} options options + * @param {string[]=} options.authenticator.otpBlurb content accompanying otp entry + * @param {object} options.manager manager options + * @param {string} options.manager.pageTitle page title + * @param {string=} options.manager.logoUrl logo url + * @param {string=} options.manager.logoAlt logo alt text + * @param {object} options.dingus dingus options + * @param {string} options.dingus.selfBaseUrl root url + * @param {AppTemplateCallback} appCb function to mogrify htmlOptions + * @returns {string} page */ -module.exports = (ctx, options) => { +module.exports = (ctx, options, appCb = () => {}) => { + const pagePathLevel = 1; const htmlOptions = { + pageIdentifier: 'otp', pageTitle: options.manager.pageTitle, logoUrl: options.manager.logoUrl, footerEntries: options.manager.footerEntries, otpBlurb: options.authenticator?.otpBlurb, }; + appCb(pagePathLevel, ctx, htmlOptions); + sessionNavLinks(pagePathLevel, ctx, htmlOptions); const mainContent = [ ...(options.authenticator?.loginBlurb || []), otpSection(ctx, htmlOptions), ]; - return th.htmlPage(2, ctx, htmlOptions, mainContent); + return th.htmlPage(pagePathLevel, ctx, htmlOptions, mainContent); }; \ No newline at end of file