|
@@ -4,6 +4,7 @@ TokenAccessHandler = require './TokenAccessHandler'
|
|
|
Errors = require '../Errors/Errors'
|
|
Errors = require '../Errors/Errors'
|
|
|
logger = require 'logger-sharelatex'
|
|
logger = require 'logger-sharelatex'
|
|
|
settings = require 'settings-sharelatex'
|
|
settings = require 'settings-sharelatex'
|
|
|
|
|
+V1Api = require "../V1/V1Api"
|
|
|
|
|
|
|
|
module.exports = TokenAccessController =
|
|
module.exports = TokenAccessController =
|
|
|
|
|
|
|
@@ -91,23 +92,26 @@ module.exports = TokenAccessController =
|
|
|
return next(new Errors.NotFoundError())
|
|
return next(new Errors.NotFoundError())
|
|
|
TokenAccessController._tryHigherAccess(token, userId, req, res, next)
|
|
TokenAccessController._tryHigherAccess(token, userId, req, res, next)
|
|
|
else
|
|
else
|
|
|
- if !userId?
|
|
|
|
|
- logger.log {userId, projectId: project._id},
|
|
|
|
|
- "[TokenAccess] adding anonymous user to project with readOnly token"
|
|
|
|
|
- TokenAccessHandler.grantSessionTokenAccess(req, project._id, token)
|
|
|
|
|
- req._anonymousAccessToken = token
|
|
|
|
|
- return TokenAccessController._loadEditor(project._id, req, res, next)
|
|
|
|
|
- else
|
|
|
|
|
- if project.owner_ref.toString() == userId
|
|
|
|
|
|
|
+ V1Api.request { url: "/api/v1/sharelatex/docs/#{token}/read" }, (err, respose, body) ->
|
|
|
|
|
+ return next err if err?
|
|
|
|
|
+ return res.redirect body.published_path if body.allow == false
|
|
|
|
|
+ if !userId?
|
|
|
logger.log {userId, projectId: project._id},
|
|
logger.log {userId, projectId: project._id},
|
|
|
- "[TokenAccess] user is already project owner"
|
|
|
|
|
- return TokenAccessController._loadEditor(project._id, req, res, next)
|
|
|
|
|
- logger.log {userId, projectId: project._id},
|
|
|
|
|
- "[TokenAccess] adding user to project with readOnly token"
|
|
|
|
|
- TokenAccessHandler.addReadOnlyUserToProject userId, project._id, (err) ->
|
|
|
|
|
- if err?
|
|
|
|
|
- logger.err {err, token, userId, projectId: project._id},
|
|
|
|
|
- "[TokenAccess] error adding user to project with readAndWrite token"
|
|
|
|
|
- return next(err)
|
|
|
|
|
|
|
+ "[TokenAccess] adding anonymous user to project with readOnly token"
|
|
|
|
|
+ TokenAccessHandler.grantSessionTokenAccess(req, project._id, token)
|
|
|
|
|
+ req._anonymousAccessToken = token
|
|
|
return TokenAccessController._loadEditor(project._id, req, res, next)
|
|
return TokenAccessController._loadEditor(project._id, req, res, next)
|
|
|
|
|
+ else
|
|
|
|
|
+ if project.owner_ref.toString() == userId
|
|
|
|
|
+ logger.log {userId, projectId: project._id},
|
|
|
|
|
+ "[TokenAccess] user is already project owner"
|
|
|
|
|
+ return TokenAccessController._loadEditor(project._id, req, res, next)
|
|
|
|
|
+ logger.log {userId, projectId: project._id},
|
|
|
|
|
+ "[TokenAccess] adding user to project with readOnly token"
|
|
|
|
|
+ TokenAccessHandler.addReadOnlyUserToProject userId, project._id, (err) ->
|
|
|
|
|
+ if err?
|
|
|
|
|
+ logger.err {err, token, userId, projectId: project._id},
|
|
|
|
|
+ "[TokenAccess] error adding user to project with readAndWrite token"
|
|
|
|
|
+ return next(err)
|
|
|
|
|
+ return TokenAccessController._loadEditor(project._id, req, res, next)
|
|
|
|
|
|