| 123456789101112131415161718192021222324252627282930313233343536373839 |
- module.exports = AuthorizationManager =
- assertClientCanViewProject: (client, callback = (error) ->) ->
- AuthorizationManager._assertClientHasPrivilegeLevel client, ["readOnly", "readAndWrite", "owner"], callback
- assertClientCanEditProject: (client, callback = (error) ->) ->
- AuthorizationManager._assertClientHasPrivilegeLevel client, ["readAndWrite", "owner"], callback
-
- _assertClientHasPrivilegeLevel: (client, allowedLevels, callback = (error) ->) ->
- client.get "privilege_level", (error, privilegeLevel) ->
- return callback(error) if error?
- allowed = (privilegeLevel in allowedLevels)
- if allowed
- callback null
- else
- callback new Error("not authorized")
- assertClientCanViewProjectAndDoc: (client, doc_id, callback = (error) ->) ->
- AuthorizationManager.assertClientCanViewProject client, (error) ->
- return callback(error) if error?
- AuthorizationManager._assertClientCanAccessDoc client, doc_id, callback
- assertClientCanEditProjectAndDoc: (client, doc_id, callback = (error) ->) ->
- AuthorizationManager.assertClientCanEditProject client, (error) ->
- return callback(error) if error?
- AuthorizationManager._assertClientCanAccessDoc client, doc_id, callback
- _assertClientCanAccessDoc: (client, doc_id, callback = (error) ->) ->
- client.get "doc:#{doc_id}", (error, status) ->
- return callback(error) if error?
- if status? and status is "allowed"
- callback null
- else
- callback new Error("not authorized")
- addAccessToDoc: (client, doc_id, callback = (error) ->) ->
- client.set("doc:#{doc_id}", "allowed", callback)
- removeAccessToDoc: (client, doc_id, callback = (error) ->) ->
- client.del("doc:#{doc_id}", callback)
|