[web] Log messages to the project audit log and do so for enabling/disabling sharing (#10281)

GitOrigin-RevId: d6af26bcbafb4d1789fca6319fd343fe8c2ecd25
This commit is contained in:
Dr. Sasha Göbbels
2022-12-12 14:09:15 +01:00
committed by Copybot
parent 1ad8a99887
commit c9cf530e36
5 changed files with 70 additions and 12 deletions
@@ -45,6 +45,8 @@ const SubscriptionViewModelBuilder = require('../Subscription/SubscriptionViewMo
const SurveyHandler = require('../Survey/SurveyHandler')
const { expressify } = require('../../util/promises')
const ProjectListController = require('./ProjectListController')
const ProjectAuditLogHandler = require('./ProjectAuditLogHandler')
const PublicAccessLevels = require('../Authorization/PublicAccessLevels')
/**
* @typedef {import("./types").GetProjectsRequest} GetProjectsRequest
@@ -131,9 +133,21 @@ const ProjectController = {
updateProjectAdminSettings(req, res, next) {
const projectId = req.params.Project_id
const user = SessionManager.getSessionUser(req.session)
const publicAccessLevel = req.body.publicAccessLevel
const publicAccessLevels = [
PublicAccessLevels.READ_ONLY,
PublicAccessLevels.READ_AND_WRITE,
PublicAccessLevels.PRIVATE,
PublicAccessLevels.TOKEN_BASED,
]
if (
req.body.publicAccessLevel != null &&
publicAccessLevels.includes(publicAccessLevel)
) {
const jobs = []
const jobs = []
if (req.body.publicAccessLevel != null) {
jobs.push(callback =>
EditorController.setPublicAccessLevel(
projectId,
@@ -141,14 +155,26 @@ const ProjectController = {
callback
)
)
}
async.series(jobs, error => {
if (error != null) {
return next(error)
}
res.sendStatus(204)
})
jobs.push(callback =>
ProjectAuditLogHandler.addEntry(
projectId,
'toggle-access-level',
user._id,
{ publicAccessLevel: req.body.publicAccessLevel, status: 'OK' },
callback
)
)
async.series(jobs, error => {
if (error != null) {
return next(error)
}
res.sendStatus(204)
})
} else {
res.sendStatus(500)
}
},
deleteProject(req, res) {