'use strict';
const { TemplateHelper: th } = require('@squeep/html-template-helper');
+const { sessionNavLinks } = require('./helpers');
/**
* Login form, continued.
function otpSection(ctx, options) {
const otpBlurb = (options.otpBlurb || []).map((x) => '\t'.repeat(6) + x).join('\n');
return `\t\t\t<section class="otp">
-\t\t\t\t<form action="" method="POST">
+\t\t\t\t<form method="POST">
\t\t\t\t\t<fieldset>
\t\t\t\t\t\t<legend>Two-Factor Authentication</legend>
\t\t\t\t\t\t<label for="otp">OTP Code</label>
-\t\t\t\t\t\t<input id="otp" name="otp" value="">
+\t\t\t\t\t\t<input type="tel" id="otp" name="otp" value="">
\t\t\t\t\t\t<br>
-\t\t\t\t\t\t<button>Confirm</button>
+\t\t\t\t\t\t<button type="submit">Confirm</button>
${otpBlurb}
\t\t\t\t\t</fieldset>
\t\t\t\t\t<input type="hidden" name="state" value="${ctx.otpState}">
\t\t\t\t</form>
-\t\t\t</section`;
+\t\t\t</section>`;
}
* @param {String=} options.manager.logoUrl
* @param {Object} options.dingus
* @param {String} options.dingus.selfBaseUrl
+ * @param {() => {}} appCb
* @returns {String}
*/
-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