AuthorizationManager.coffee 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. SecurityManager = require '../../managers/SecurityManager'
  2. module.exports = AuthorizationManager =
  3. getPrivilegeLevelForProject: (
  4. project, user,
  5. callback = (error, canAccess, privilegeLevel)->
  6. ) ->
  7. # This is not tested because eventually this function should be brought into
  8. # this module.
  9. SecurityManager.userCanAccessProject user, project, (canAccess, privilegeLevel) ->
  10. if canAccess
  11. callback null, true, privilegeLevel
  12. else
  13. callback null, false
  14. setPrivilegeLevelOnClient: (client, privilegeLevel) ->
  15. client.set("privilege_level", privilegeLevel)
  16. ensureClientCanViewProject: (client, callback = (error, project_id)->) ->
  17. @ensureClientHasPrivilegeLevelForProject client, ["owner", "readAndWrite", "readOnly"], callback
  18. ensureClientCanEditProject: (client, callback = (error, project_id)->) ->
  19. @ensureClientHasPrivilegeLevelForProject client, ["owner", "readAndWrite"], callback
  20. ensureClientCanAdminProject: (client, callback = (error, project_id)->) ->
  21. @ensureClientHasPrivilegeLevelForProject client, ["owner"], callback
  22. ensureClientHasPrivilegeLevelForProject: (client, levels, callback = (error, project_id)->) ->
  23. client.get "privilege_level", (error, level) ->
  24. return callback(error) if error?
  25. if level?
  26. client.get "project_id", (error, project_id) ->
  27. return callback(error) if error?
  28. if project_id?
  29. if levels.indexOf(level) > -1
  30. callback null, project_id