4 * Populates nevLinks with (currently hardcoded) session-related links.
5 * @param {number} pagePathLevel relative to base
6 * @param {object} ctx context
7 * @param {string=} ctx.url redirect on logout
8 * @param {object=} ctx.session session object
9 * @param {string=} ctx.session.authenticatedIdentifier active authentication identifier
10 * @param {string=} ctx.session.authenticatedProfile active indieauth profile
11 * @param {object} options options
12 * @param {object[]=} options.navLinks created if not present
13 * @param {string=} options.pageIdentifier internal reference to page template being rendered
15 function sessionNavLinks(pagePathLevel
, ctx
, options
) {
16 if (!options
.navLinks
) {
17 options
.navLinks
= [];
19 const rootPath
= '../'.repeat(pagePathLevel
);
20 const redirectQuery
= ctx
?.url
? `?r=${encodeURIComponent(ctx.url)}` : rootPath
;
21 const adminPath
= rootPath
+ 'admin/';
23 const user
= ctx
?.session
?.authenticatedProfile
|| ctx
?.session
?.authenticatedIdentifier
;
25 if (options
.pageIdentifier
!== 'account') {
26 options
.navLinks
.push({
28 href: `${adminPath}settings`,
31 options
.navLinks
.push({
32 text: `Logout (${user})`,
33 href: `${adminPath}logout${redirectQuery}`,
36 options
.navLinks
.push({
38 href: `${adminPath}login${redirectQuery}`,