@fontoxml/fontoxml-development-tools
Version:
Development tools for Fonto.
48 lines (39 loc) • 1.14 kB
JavaScript
function createSession(editSessionToken, scope) {
return {
editSessionToken,
user: {
id: 'anonymous',
displayName: 'Anonymous',
...(scope && scope.user),
},
};
}
export default function configureFontoSessionMiddleware() {
const sessionByEditSessionToken = Object.create(null);
function ensureFontoSession(scope) {
const editSessionToken = scope.editSessionToken;
let session = sessionByEditSessionToken[editSessionToken];
if (!session) {
session = sessionByEditSessionToken[editSessionToken] =
createSession(editSessionToken, scope);
}
return session;
}
function hasFontoSession(scope) {
return !!sessionByEditSessionToken[scope.editSessionToken];
}
function getFontoSession(editSessionToken) {
let session = sessionByEditSessionToken[editSessionToken];
if (!session) {
console.warn(`\nNo session for edit session ${editSessionToken}.`);
session = createSession(editSessionToken);
}
return session;
}
return (req, _res, next) => {
req.ensureFontoSession = ensureFontoSession;
req.getFontoSession = getFontoSession;
req.hasFontoSession = hasFontoSession;
next();
};
}