diff --git a/server-ce/nginx/nginx.conf.template b/server-ce/nginx/nginx.conf.template index 907a2f675a..2c59ab9ff2 100644 --- a/server-ce/nginx/nginx.conf.template +++ b/server-ce/nginx/nginx.conf.template @@ -47,6 +47,7 @@ http { gzip_proxied any; # allow upstream server to compress. client_max_body_size 500m; + client_body_timeout 15m; # gzip_vary on; # gzip_proxied any; diff --git a/services/web/app/src/Features/Errors/ErrorController.mjs b/services/web/app/src/Features/Errors/ErrorController.mjs index a03963d074..810c44ef1c 100644 --- a/services/web/app/src/Features/Errors/ErrorController.mjs +++ b/services/web/app/src/Features/Errors/ErrorController.mjs @@ -5,26 +5,14 @@ import { } from '@overleaf/validation-tools' import Errors, { NotFoundError } from './Errors.js' import SessionManager from '../Authentication/SessionManager.mjs' -import UserGetter from '../User/UserGetter.mjs' import SamlLogHandler from '../SamlLog/SamlLogHandler.mjs' import HttpErrorHandler from './HttpErrorHandler.mjs' import { plainTextResponse } from '../../infrastructure/Response.mjs' import { expressifyErrorHandler } from '@overleaf/promise-utils' -async function notFound(req, res) { +function notFound(req, res) { res.status(404) - const sessionUser = SessionManager.getSessionUser(req.session) - let isLumiere = false - if (sessionUser?._id) { - try { - const user = await UserGetter.promises.getUser(sessionUser._id, { - 'ace.overallTheme': 1, - signUpDate: 1, - }) - isLumiere = (user?.ace?.overallTheme ?? '') === 'lumiere-' - } catch {} - } - res.render('general/404', { title: 'page_not_found', isLumiere }) + res.render('general/404', { title: 'page_not_found' }) } function forbidden(req, res) { diff --git a/services/web/app/src/Features/PasswordReset/PasswordResetController.mjs b/services/web/app/src/Features/PasswordReset/PasswordResetController.mjs index 77462f82cb..8079e54187 100644 --- a/services/web/app/src/Features/PasswordReset/PasswordResetController.mjs +++ b/services/web/app/src/Features/PasswordReset/PasswordResetController.mjs @@ -215,23 +215,12 @@ async function renderSetPasswordForm(req, res, next) { const passwordResetToken = req.session.resetToken delete req.session.resetToken - let isLumiere = false - if (email) { - try { - const emailUser = await UserGetter.promises.getUserByMainEmail(email, { - 'ace.overallTheme': 1, - }) - isLumiere = (emailUser?.ace?.overallTheme ?? '') === 'lumiere-' - } catch {} - } - res.render( Features.hasFeature('saas') ? 'user/setPasswordCiam' : 'user/setPassword', { title: 'set_password', email, passwordResetToken, - isLumiere, } ) } diff --git a/services/web/app/src/Features/Project/UserSettingsHelper.mjs b/services/web/app/src/Features/Project/UserSettingsHelper.mjs index d23ec46d8c..60a0f6a0de 100644 --- a/services/web/app/src/Features/Project/UserSettingsHelper.mjs +++ b/services/web/app/src/Features/Project/UserSettingsHelper.mjs @@ -46,4 +46,5 @@ async function buildUserSettings(_req, _res, user) { export default { buildUserSettings, + getOverallTheme, } diff --git a/services/web/app/src/Features/User/UserPagesController.mjs b/services/web/app/src/Features/User/UserPagesController.mjs index 3e1255f947..edf00d1960 100644 --- a/services/web/app/src/Features/User/UserPagesController.mjs +++ b/services/web/app/src/Features/User/UserPagesController.mjs @@ -177,7 +177,6 @@ async function settingsPage(req, res) { isSaas: Features.hasFeature('saas'), memberOfSSOEnabledGroups, capabilities: [...req.capabilitySet], - isLumiere: (user?.ace?.overallTheme ?? '') === 'lumiere-', }) } diff --git a/services/web/app/src/infrastructure/ExpressLocals.mjs b/services/web/app/src/infrastructure/ExpressLocals.mjs index 5da9f4b583..6c8b3734d1 100644 --- a/services/web/app/src/infrastructure/ExpressLocals.mjs +++ b/services/web/app/src/infrastructure/ExpressLocals.mjs @@ -8,6 +8,8 @@ import { fetchJson } from '@overleaf/fetch-utils' import contentDisposition from 'content-disposition' import Features from './Features.mjs' import SessionManager from '../Features/Authentication/SessionManager.mjs' +import UserGetter from '../Features/User/UserGetter.mjs' +import UserSettingsHelper from '../Features/Project/UserSettingsHelper.mjs' import PackageVersions from './PackageVersions.js' import Modules from './Modules.mjs' import Errors from '../Features/Errors/Errors.js' @@ -269,6 +271,28 @@ export default async function (webRouter, privateApiRouter, publicApiRouter) { next() }) + webRouter.use( + expressify(async function (req, res, next) { + res.locals.isLumiere = false + const sessionUser = SessionManager.getSessionUser(req.session) + if (sessionUser?._id) { + try { + const user = await UserGetter.promises.getUser(sessionUser._id, { + 'ace.overallTheme': 1, + signUpDate: 1, + }) + if (user) { + res.locals.isLumiere = + UserSettingsHelper.getOverallTheme(user) === 'lumiere-' + } + } catch (err) { + logger.warn({ err }, 'failed to fetch theme for isLumiere') + } + } + next() + }) + ) + webRouter.use(function (req, res, next) { res.locals.getLoggedInUserId = () => SessionManager.getLoggedInUserId(req.session) diff --git a/services/web/modules/user-activate/app/src/UserActivateController.mjs b/services/web/modules/user-activate/app/src/UserActivateController.mjs index 83a0c348d9..6bee167e03 100644 --- a/services/web/modules/user-activate/app/src/UserActivateController.mjs +++ b/services/web/modules/user-activate/app/src/UserActivateController.mjs @@ -40,7 +40,6 @@ async function activateAccountPage(req, res, next) { const user = await UserGetter.promises.getUser(req.query.user_id, { email: 1, loginCount: 1, - 'ace.overallTheme': 1, }) if (!user) { @@ -60,7 +59,6 @@ async function activateAccountPage(req, res, next) { title: 'activate_account', email: user.email, token: req.query.token, - isLumiere: (user?.ace?.overallTheme ?? '') === 'lumiere-', }) }