acl.js 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. const logger = require('@alias/logger')('growi:service:AclService'); // eslint-disable-line no-unused-vars
  2. /**
  3. * the service class of AclService
  4. */
  5. class AclService {
  6. constructor(configManager) {
  7. this.configManager = configManager;
  8. this.labels = {
  9. SECURITY_RESTRICT_GUEST_MODE_DENY: 'Deny',
  10. SECURITY_RESTRICT_GUEST_MODE_READONLY: 'Readonly',
  11. SECURITY_REGISTRATION_MODE_OPEN: 'Open',
  12. SECURITY_REGISTRATION_MODE_RESTRICTED: 'Restricted',
  13. SECURITY_REGISTRATION_MODE_CLOSED: 'Closed',
  14. };
  15. }
  16. isAclEnabled() {
  17. const wikiMode = this.configManager.getConfig('crowi', 'security:wikiMode');
  18. return wikiMode !== 'public';
  19. }
  20. isWikiModeForced() {
  21. const wikiMode = this.configManager.getConfig('crowi', 'security:wikiMode');
  22. const isPrivateOrPublic = wikiMode === 'private' || wikiMode === 'public';
  23. return isPrivateOrPublic;
  24. }
  25. getGuestModeValue() {
  26. return this.isGuestAllowedToRead()
  27. ? this.labels.SECURITY_RESTRICT_GUEST_MODE_READONLY
  28. : this.labels.SECURITY_RESTRICT_GUEST_MODE_DENY;
  29. }
  30. isGuestAllowedToRead() {
  31. const wikiMode = this.configManager.getConfig('crowi', 'security:wikiMode');
  32. // return false if private wiki mode
  33. if (wikiMode === 'private') {
  34. return false;
  35. }
  36. // return true if public wiki mode
  37. if (wikiMode === 'public') {
  38. return true;
  39. }
  40. const guestMode = this.configManager.getConfig('crowi', 'security:restrictGuestMode');
  41. // 'Readonly' => returns true (allow access to guests)
  42. // 'Deny', null, undefined, '', ... everything else => returns false (requires login)
  43. return guestMode === this.labels.SECURITY_RESTRICT_GUEST_MODE_READONLY;
  44. }
  45. getRestrictGuestModeLabels() {
  46. const labels = {};
  47. labels[this.labels.SECURITY_RESTRICT_GUEST_MODE_DENY] = 'security_setting.guest_mode.deny';
  48. labels[this.labels.SECURITY_RESTRICT_GUEST_MODE_READONLY] = 'security_setting.guest_mode.readonly';
  49. return labels;
  50. }
  51. getRegistrationModeLabels() {
  52. const labels = {};
  53. labels[this.labels.SECURITY_REGISTRATION_MODE_OPEN] = 'security_setting.registration_mode.open';
  54. labels[this.labels.SECURITY_REGISTRATION_MODE_RESTRICTED] = 'security_setting.registration_mode.restricted';
  55. labels[this.labels.SECURITY_REGISTRATION_MODE_CLOSED] = 'security_setting.registration_mode.closed';
  56. return labels;
  57. }
  58. userUpperLimit() {
  59. // const limit = this.configManager.getConfig('crowi', 'USER_UPPER_LIMIT');
  60. const limit = process.env.USER_UPPER_LIMIT;
  61. if (limit) {
  62. return Number(limit);
  63. }
  64. return 0;
  65. }
  66. }
  67. module.exports = AclService;