Merge pull request #2255 from overleaf/em-audit-log

Project audit logs

GitOrigin-RevId: 439add2959be140c4f56ce9b41b9f59d432c494d
This commit is contained in:
Eric Mc Sween
2019-10-23 08:24:09 -04:00
committed by sharelatex
parent f6e4be616c
commit 06de9233b8
13 changed files with 611 additions and 374 deletions

View File

@@ -3,13 +3,9 @@ const fs = require('fs')
const crypto = require('crypto')
const async = require('async')
const logger = require('logger-sharelatex')
const HttpErrors = require('@overleaf/o-error/http')
const { ObjectId } = require('mongodb')
const Errors = require('../Errors/Errors')
const ProjectDeleter = require('./ProjectDeleter')
const ProjectDuplicator = require('./ProjectDuplicator')
const ProjectCreationHandler = require('./ProjectCreationHandler')
const ProjectDetailsHandler = require('./ProjectDetailsHandler')
const EditorController = require('../Editor/EditorController')
const ProjectHelper = require('./ProjectHelper')
const metrics = require('metrics-sharelatex')
@@ -813,75 +809,6 @@ const ProjectController = {
)
},
transferOwnership(req, res, next) {
const sessionUser = AuthenticationController.getSessionUser(req)
if (req.body.user_id == null) {
return next(
new HttpErrors.BadRequestError({
info: { public: { message: 'Missing parameter: user_id' } }
})
)
}
let projectId
try {
projectId = ObjectId(req.params.Project_id)
} catch (err) {
return next(
new HttpErrors.BadRequestError({
info: {
public: { message: `Invalid project id: ${req.params.Project_id}` }
}
})
)
}
let toUserId
try {
toUserId = ObjectId(req.body.user_id)
} catch (err) {
return next(
new HttpErrors.BadRequestError({
info: { public: { message: `Invalid user id: ${req.body.user_id}` } }
})
)
}
ProjectDetailsHandler.transferOwnership(
projectId,
toUserId,
{ allowTransferToNonCollaborators: sessionUser.isAdmin },
err => {
if (err != null) {
if (err instanceof Errors.ProjectNotFoundError) {
next(
new HttpErrors.NotFoundError({
info: { public: { message: `project not found: ${projectId}` } }
})
)
} else if (err instanceof Errors.UserNotFoundError) {
next(
new HttpErrors.NotFoundError({
info: { public: { message: `user not found: ${toUserId}` } }
})
)
} else if (err instanceof Errors.UserNotCollaboratorError) {
next(
new HttpErrors.ForbiddenError({
info: {
public: {
message: `user ${toUserId} should be a collaborator in project ${projectId} prior to ownership transfer`
}
}
})
)
} else {
next(err)
}
} else {
res.sendStatus(204)
}
}
)
},
_buildProjectList(allProjects, userId, v1Projects) {
let project
if (v1Projects == null) {