Release 2.8.0
This commit is contained in:
+22
-4
@@ -9,6 +9,7 @@ const common = require('./common');
|
||||
const { verifyPassword, createSessionToken, hashSessionToken, hashPassword, validatePasswordStrength } = require('#src/auth');
|
||||
const pages = require('#src/web/pages');
|
||||
const registerMiddleware = require('#src/web/middleware');
|
||||
const registerNotFoundHandler = require('#src/web/middleware/not-found');
|
||||
const { createBackgroundTaskQueue } = require('#src/web/lib/background-tasks/queue');
|
||||
const { initializeBackgroundTasks } = require('#src/web/lib/background-tasks');
|
||||
const { createDataSourceTaskService } = require('#src/web/lib/background-tasks/tasks-scheduled/data-source-refresh');
|
||||
@@ -23,6 +24,8 @@ const { rbacData } = require('#src/web/lib/auth');
|
||||
const { createPlayerActionService } = require('#src/web/lib/player-actions');
|
||||
const { isClientNameAvailable, withClientNameReservation } = require('#src/data/client-name-check');
|
||||
const { createSessionService } = require('#src/web/lib/auth');
|
||||
const { fetchAppSettings } = require('#src/data/app-settings');
|
||||
const { recordRequestAuditEvent } = require('#src/data/audit-log');
|
||||
const { hasAnyPermission } = require('#src/rbac');
|
||||
const { ensureFontLibrary } = require('#src/web/lib/media/font-library');
|
||||
const {
|
||||
@@ -34,7 +37,6 @@ const {
|
||||
getAuditUserId,
|
||||
getCanvasSignature,
|
||||
fetchPlaylistCanvasId,
|
||||
fetchPlaylistCanvasSignature,
|
||||
fetchScreensByPlaylistId,
|
||||
fetchScreensBySlideId,
|
||||
fetchScreensByTemplateId,
|
||||
@@ -92,6 +94,14 @@ async function start() {
|
||||
const sessionService = createSessionService({
|
||||
sessionCookieName: webConfig.sessionCookieName,
|
||||
sessionMaxAgeMs: webConfig.sessionMaxAgeMs,
|
||||
getConfiguredSessionMaxAgeMs: async function () {
|
||||
const settings = await fetchAppSettings(pool);
|
||||
return Number(settings['security.session_lifetime_days']) * 24 * 60 * 60 * 1000;
|
||||
},
|
||||
getConfiguredMaxActiveSessions: async function () {
|
||||
const settings = await fetchAppSettings(pool);
|
||||
return Number(settings['security.max_active_sessions']);
|
||||
},
|
||||
hashSessionToken: hashSessionToken,
|
||||
createSessionToken: createSessionToken
|
||||
});
|
||||
@@ -99,6 +109,7 @@ async function start() {
|
||||
const createUserSession = sessionService.createUserSession;
|
||||
const clearSessionCookie = sessionService.clearSessionCookie;
|
||||
const setSessionCookie = sessionService.setSessionCookie;
|
||||
const getSessionMaxAgeMs = sessionService.getSessionMaxAgeMs;
|
||||
const setAuthMessageCookie = sessionService.setAuthMessageCookie;
|
||||
const consumeAuthMessageCookie = sessionService.consumeAuthMessageCookie;
|
||||
const loadCurrentUser = sessionService.loadCurrentUser;
|
||||
@@ -119,9 +130,11 @@ async function start() {
|
||||
common: common,
|
||||
pages: pages,
|
||||
upload: upload,
|
||||
mediaDir: webConfig.mediaDir,
|
||||
uploadDir: webConfig.uploadsDir,
|
||||
createUserSession: createUserSession,
|
||||
setSessionCookie: setSessionCookie,
|
||||
getSessionMaxAgeMs: getSessionMaxAgeMs,
|
||||
clearSessionCookie: clearSessionCookie,
|
||||
setAuthMessageCookie: setAuthMessageCookie,
|
||||
consumeAuthMessageCookie: consumeAuthMessageCookie,
|
||||
@@ -131,6 +144,7 @@ async function start() {
|
||||
sessionCookieName: webConfig.sessionCookieName,
|
||||
formatDashboardDate: formatDashboardDate,
|
||||
getAuditUserId: getAuditUserId,
|
||||
recordRequestAuditEvent: recordRequestAuditEvent,
|
||||
hashPassword: hashPassword,
|
||||
validatePasswordStrength: validatePasswordStrength,
|
||||
readArrayField: readArrayField,
|
||||
@@ -140,7 +154,6 @@ async function start() {
|
||||
fetchScreensBySlideId: fetchScreensBySlideId,
|
||||
fetchScreensByTemplateId: fetchScreensByTemplateId,
|
||||
fetchPlaylistCanvasId: fetchPlaylistCanvasId,
|
||||
fetchPlaylistCanvasSignature: fetchPlaylistCanvasSignature,
|
||||
getCanvasSignature: getCanvasSignature,
|
||||
normalizeScheduleMode: normalizeScheduleMode,
|
||||
parseDateTimeLocal: parseDateTimeLocal,
|
||||
@@ -157,7 +170,6 @@ async function start() {
|
||||
},
|
||||
hasAnyPermission: hasAnyPermission,
|
||||
backgroundTaskQueue: backgroundTaskQueue,
|
||||
mediaDir: webConfig.mediaDir,
|
||||
uploadSyncService: webBootstrap.uploadSyncService,
|
||||
collectUploadReferencesFromSlide: collectUploadReferencesFromSlide,
|
||||
collectUploadReferencesFromTemplate: collectUploadReferencesFromTemplate,
|
||||
@@ -167,9 +179,15 @@ async function start() {
|
||||
buildDashboardState: webBootstrap.buildDashboardState
|
||||
});
|
||||
|
||||
registerNotFoundHandler(app);
|
||||
|
||||
app.use(function (error, req, res, _next) {
|
||||
console.error(error);
|
||||
const statusCode = Number(error && (error.statusCode || error.status)) || 500;
|
||||
if (statusCode >= 500) {
|
||||
console.error(error);
|
||||
} else if (statusCode >= 400 && statusCode !== 404) {
|
||||
console.warn(error && error.message ? error.message : 'Request failed.', { statusCode: statusCode });
|
||||
}
|
||||
const isXhr = String(req.get && req.get('X-Requested-With') || '').toLowerCase() === 'xmlhttprequest';
|
||||
const wantsHtml = !isXhr && !String(req.originalUrl || '').startsWith('/api/') && (!req.accepts || req.accepts('html'));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user