mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-06-03 14:19:01 +02:00
577497b655
[misc] add readonly mirror of full project content on the client GitOrigin-RevId: 940bd93bfd587f83ca383d10fc44579b38fc3e88
50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
const SplitTestHandler = require('./SplitTestHandler')
|
|
const logger = require('@overleaf/logger')
|
|
const { expressify } = require('@overleaf/promise-utils')
|
|
const Errors = require('../Errors/Errors')
|
|
|
|
function loadAssignmentsInLocals(splitTestNames) {
|
|
return async function (req, res, next) {
|
|
try {
|
|
for (const splitTestName of splitTestNames) {
|
|
await SplitTestHandler.promises.getAssignment(req, res, splitTestName)
|
|
}
|
|
} catch (error) {
|
|
logger.error(
|
|
{ err: error, splitTestNames },
|
|
'Failed to load split test assignments in express locals in middleware'
|
|
)
|
|
}
|
|
next()
|
|
}
|
|
}
|
|
|
|
function ensureSplitTestEnabledForUser(
|
|
splitTestName,
|
|
enabledVariant = 'enabled'
|
|
) {
|
|
return expressify(async function (req, res, next) {
|
|
const { variant } = await SplitTestHandler.promises.getAssignment(
|
|
req,
|
|
res,
|
|
splitTestName
|
|
)
|
|
if (variant !== enabledVariant) {
|
|
throw new Errors.ForbiddenError({
|
|
message: 'missing split test access',
|
|
info: {
|
|
splitTestName,
|
|
variant,
|
|
enabledVariant,
|
|
},
|
|
})
|
|
}
|
|
next()
|
|
})
|
|
}
|
|
|
|
module.exports = {
|
|
loadAssignmentsInLocals,
|
|
ensureSplitTestEnabledForUser,
|
|
}
|