AuthorizationManager.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /* eslint-disable
  2. camelcase,
  3. */
  4. let AuthorizationManager
  5. module.exports = AuthorizationManager = {
  6. assertClientCanViewProject(client, callback) {
  7. AuthorizationManager._assertClientHasPrivilegeLevel(
  8. client,
  9. ['readOnly', 'readAndWrite', 'owner'],
  10. callback
  11. )
  12. },
  13. assertClientCanEditProject(client, callback) {
  14. AuthorizationManager._assertClientHasPrivilegeLevel(
  15. client,
  16. ['readAndWrite', 'owner'],
  17. callback
  18. )
  19. },
  20. _assertClientHasPrivilegeLevel(client, allowedLevels, callback) {
  21. if (allowedLevels.includes(client.ol_context.privilege_level)) {
  22. callback(null)
  23. } else {
  24. callback(new Error('not authorized'))
  25. }
  26. },
  27. assertClientCanViewProjectAndDoc(client, doc_id, callback) {
  28. AuthorizationManager.assertClientCanViewProject(client, function (error) {
  29. if (error) {
  30. return callback(error)
  31. }
  32. AuthorizationManager._assertClientCanAccessDoc(client, doc_id, callback)
  33. })
  34. },
  35. assertClientCanEditProjectAndDoc(client, doc_id, callback) {
  36. AuthorizationManager.assertClientCanEditProject(client, function (error) {
  37. if (error) {
  38. return callback(error)
  39. }
  40. AuthorizationManager._assertClientCanAccessDoc(client, doc_id, callback)
  41. })
  42. },
  43. _assertClientCanAccessDoc(client, doc_id, callback) {
  44. if (client.ol_context[`doc:${doc_id}`] === 'allowed') {
  45. callback(null)
  46. } else {
  47. callback(new Error('not authorized'))
  48. }
  49. },
  50. addAccessToDoc(client, doc_id, callback) {
  51. client.ol_context[`doc:${doc_id}`] = 'allowed'
  52. callback(null)
  53. },
  54. removeAccessToDoc(client, doc_id, callback) {
  55. delete client.ol_context[`doc:${doc_id}`]
  56. callback(null)
  57. }
  58. }