mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-30 04:21:32 +02:00
Admin tools: themed dashboard
This commit is contained in:
@@ -4,21 +4,32 @@ import { fileURLToPath } from 'node:url'
|
||||
import { expressify } from '@overleaf/promise-utils'
|
||||
import logger from '@overleaf/logger'
|
||||
import Metrics from '@overleaf/metrics'
|
||||
import SessionManager from '../../../../app/src/Features/Authentication/SessionManager.mjs'
|
||||
import PrivilegeLevels from '../../../../app/src/Features/Authorization/PrivilegeLevels.mjs'
|
||||
import ProjectHelper from '../../../../app/src/Features/Project/ProjectHelper.mjs'
|
||||
import ProjectGetter from '../../../../app/src/Features/Project/ProjectGetter.mjs'
|
||||
import PrivilegeLevels from '../../../../app/src/Features/Authorization/PrivilegeLevels.mjs'
|
||||
import SessionManager from '../../../../app/src/Features/Authentication/SessionManager.mjs'
|
||||
import ProjectDeleter from '../../../../app/src/Features/Project/ProjectDeleter.mjs'
|
||||
import UserSettingsHelper from '../../../../app/src/Features/Project/UserSettingsHelper.mjs'
|
||||
import UserGetter from '../../../../app/src/Features/User/UserGetter.mjs'
|
||||
import { OError } from '../../../../app/src/Features/Errors/Errors.js'
|
||||
import { User } from '../../../../app/src/models/User.mjs'
|
||||
import { Project } from '../../../../app/src/models/Project.mjs'
|
||||
import { DeletedProject } from '../../../../app/src/models/DeletedProject.mjs'
|
||||
import ProjectDeleter from '../../../../app/src/Features/Project/ProjectDeleter.mjs'
|
||||
import { OError } from '../../../../app/src/Features/Errors/Errors.js'
|
||||
import HttpErrorHandler from '../../../../app/src/Features/Errors/HttpErrorHandler.mjs'
|
||||
import SplitTestHandler from '../../../../app/src/Features/SplitTests/SplitTestHandler.mjs'
|
||||
|
||||
const __dirname = Path.dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
function cleanupSession(req) {
|
||||
// cleanup redirects at the end of the redirect chain
|
||||
delete req.session.postCheckoutRedirect
|
||||
delete req.session.postLoginRedirect
|
||||
delete req.session.postOnboardingRedirect
|
||||
}
|
||||
|
||||
async function manageProjectsPage(req, res, next) {
|
||||
cleanupSession(req)
|
||||
|
||||
const projectsBlobPending = _getProjects().catch(err => {
|
||||
logger.err({ err }, 'projects listing in background failed')
|
||||
return undefined
|
||||
@@ -30,8 +41,24 @@ async function manageProjectsPage(req, res, next) {
|
||||
status: prefetchedProjectsBlob ? 'success' : 'error',
|
||||
})
|
||||
|
||||
const userId = SessionManager.getLoggedInUserId(req.session)
|
||||
const user = await User.findById(userId, 'ace')
|
||||
|
||||
const userSettings = await UserSettingsHelper.buildUserSettings(
|
||||
req,
|
||||
res,
|
||||
user
|
||||
)
|
||||
|
||||
await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'themed-project-dashboard'
|
||||
)
|
||||
|
||||
res.render(Path.resolve(__dirname, '../views/manage-projects-react'), {
|
||||
title: 'Manage Projects',
|
||||
userSettings,
|
||||
prefetchedProjectsBlob,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -16,12 +16,14 @@ import OneTimeTokenHandler from '../../../../app/src/Features/Security/OneTimeTo
|
||||
import UserGetter from '../../../../app/src/Features/User/UserGetter.mjs'
|
||||
import UserUpdater from '../../../../app/src/Features/User/UserUpdater.mjs'
|
||||
import UserDeleter from '../../../../app/src/Features/User/UserDeleter.mjs'
|
||||
import UserSettingsHelper from '../../../../app/src/Features/Project/UserSettingsHelper.mjs'
|
||||
import ProjectDeleter from '../../../../app/src/Features/Project/ProjectDeleter.mjs'
|
||||
import OwnershipTransferHandler from '../../../../app/src/Features/Collaborators/OwnershipTransferHandler.mjs'
|
||||
import HttpErrorHandler from '../../../../app/src/Features/Errors/HttpErrorHandler.mjs'
|
||||
import ErrorController from '../../../../app/src/Features/Errors/ErrorController.mjs'
|
||||
import Errors, { OError } from '../../../../app/src/Features/Errors/Errors.js'
|
||||
import { db } from '../../../../app/src/infrastructure/mongodb.mjs'
|
||||
import SplitTestHandler from '../../../../app/src/Features/SplitTests/SplitTestHandler.mjs'
|
||||
|
||||
const __dirname = Path.dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
@@ -71,8 +73,6 @@ function cleanupSession(req) {
|
||||
async function manageUsersPage(req, res, next) {
|
||||
cleanupSession(req)
|
||||
|
||||
const userId = SessionManager.getLoggedInUserId(req.session)
|
||||
|
||||
const usersBlobPending = _getUsers().catch(err => {
|
||||
logger.err({ err }, 'users listing in background failed')
|
||||
return undefined
|
||||
@@ -84,8 +84,24 @@ async function manageUsersPage(req, res, next) {
|
||||
status: prefetchedUsersBlob ? 'success' : 'error',
|
||||
})
|
||||
|
||||
await SplitTestHandler.promises.getAssignment(
|
||||
req,
|
||||
res,
|
||||
'themed-project-dashboard'
|
||||
)
|
||||
|
||||
const userId = SessionManager.getLoggedInUserId(req.session)
|
||||
const user = await User.findById(userId, 'ace')
|
||||
|
||||
const userSettings = await UserSettingsHelper.buildUserSettings(
|
||||
req,
|
||||
res,
|
||||
user
|
||||
)
|
||||
|
||||
res.render(Path.resolve(__dirname, '../views/manage-users-react'), {
|
||||
title: 'Manage Users',
|
||||
userSettings,
|
||||
prefetchedUsersBlob,
|
||||
availableAuthMethods,
|
||||
userDetailsUpdatedOnLogin,
|
||||
|
||||
Reference in New Issue
Block a user