UNPKG

@fontoxml/fontoxml-development-tools

Version:

Development tools for Fonto.

48 lines (39 loc) 1.14 kB
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(); }; }