|
|
@@ -1,6 +1,8 @@
|
|
|
CollaboratorsHandler = require("../Collaborators/CollaboratorsHandler")
|
|
|
Project = require("../../models/Project").Project
|
|
|
User = require("../../models/User").User
|
|
|
+PrivilegeLevels = require("./PrivilegeLevels")
|
|
|
+PublicAccessLevels = require("./PublicAccessLevels")
|
|
|
|
|
|
module.exports = AuthorizationManager =
|
|
|
# Get the privilege level that the user has for the project
|
|
|
@@ -12,17 +14,19 @@ module.exports = AuthorizationManager =
|
|
|
getPublicAccessLevel = () ->
|
|
|
Project.findOne { _id: project_id }, { publicAccesLevel: 1 }, (error, project) ->
|
|
|
return callback(error) if error?
|
|
|
- if project.publicAccesLevel in ["readOnly", "readAndWrite"]
|
|
|
- return callback null, project.publicAccesLevel, true
|
|
|
+ if project.publicAccesLevel == PublicAccessLevels.READ_ONLY
|
|
|
+ return callback null, PrivilegeLevels.READ_ONLY
|
|
|
+ else if project.publicAccesLevel == PublicAccessLevels.READ_AND_WRITE
|
|
|
+ return callback null, PrivilegeLevels.READ_AND_WRITE, true
|
|
|
else
|
|
|
- return callback null, false, false
|
|
|
+ return callback null, PrivilegeLevels.NONE, false
|
|
|
|
|
|
if !user_id?
|
|
|
getPublicAccessLevel()
|
|
|
else
|
|
|
CollaboratorsHandler.getMemberIdPrivilegeLevel user_id, project_id, (error, privilegeLevel) ->
|
|
|
return callback(error) if error?
|
|
|
- if privilegeLevel? and privilegeLevel
|
|
|
+ if privilegeLevel? and privilegeLevel != PrivilegeLevels.NONE
|
|
|
# The user has direct access
|
|
|
callback null, privilegeLevel, false
|
|
|
else
|
|
|
@@ -31,19 +35,19 @@ module.exports = AuthorizationManager =
|
|
|
canUserReadProject: (user_id, project_id, callback = (error, canRead) ->) ->
|
|
|
AuthorizationManager.getPrivilegeLevelForProject user_id, project_id, (error, privilegeLevel) ->
|
|
|
return callback(error) if error?
|
|
|
- return callback null, (privilegeLevel in ["owner", "readAndWrite", "readOnly"])
|
|
|
+ return callback null, (privilegeLevel in [PrivilegeLevels.OWNER, PrivilegeLevels.READ_AND_WRITE, PrivilegeLevels.READ_ONLY])
|
|
|
|
|
|
canUserWriteProjectContent: (user_id, project_id, callback = (error, canWriteContent) ->) ->
|
|
|
AuthorizationManager.getPrivilegeLevelForProject user_id, project_id, (error, privilegeLevel) ->
|
|
|
return callback(error) if error?
|
|
|
- return callback null, (privilegeLevel in ["owner", "readAndWrite"])
|
|
|
+ return callback null, (privilegeLevel in [PrivilegeLevels.OWNER, PrivilegeLevels.READ_AND_WRITE])
|
|
|
|
|
|
canUserWriteProjectSettings: (user_id, project_id, callback = (error, canWriteSettings) ->) ->
|
|
|
AuthorizationManager.getPrivilegeLevelForProject user_id, project_id, (error, privilegeLevel, becausePublic) ->
|
|
|
return callback(error) if error?
|
|
|
- if privilegeLevel == "owner"
|
|
|
+ if privilegeLevel == PrivilegeLevels.OWNER
|
|
|
return callback null, true
|
|
|
- else if privilegeLevel == "readAndWrite" and !becausePublic
|
|
|
+ else if privilegeLevel == PrivilegeLevels.READ_AND_WRITE and !becausePublic
|
|
|
return callback null, true
|
|
|
else
|
|
|
return callback null, false
|
|
|
@@ -51,7 +55,7 @@ module.exports = AuthorizationManager =
|
|
|
canUserAdminProject: (user_id, project_id, callback = (error, canAdmin) ->) ->
|
|
|
AuthorizationManager.getPrivilegeLevelForProject user_id, project_id, (error, privilegeLevel) ->
|
|
|
return callback(error) if error?
|
|
|
- return callback null, (privilegeLevel == "owner")
|
|
|
+ return callback null, (privilegeLevel == PrivilegeLevels.OWNER)
|
|
|
|
|
|
isUserSiteAdmin: (user_id, callback = (error, isAdmin) ->) ->
|
|
|
if !user_id?
|