Explorar o código

userUpperLimit, getRegistrationModeLabels, getRestrictGuestModeLabels to aclService

mizozobu %!s(int64=6) %!d(string=hai) anos
pai
achega
d1a3e87256

+ 2 - 2
src/server/crowi/express-init.js

@@ -76,8 +76,8 @@ module.exports = function(crowi, app) {
       pageGrants: Page.getGrantLabels(),
       userStatus: User.getUserStatusLabels(),
       language:   User.getLanguageLabels(),
-      restrictGuestMode: Config.getRestrictGuestModeLabels(),
-      registrationMode: Config.getRegistrationModeLabels(),
+      restrictGuestMode: crowi.aclService.getRestrictGuestModeLabels(),
+      registrationMode: crowi.aclService.getRegistrationModeLabels(),
     };
     res.locals.local_config = Config.getLocalconfig(); // config for browser context
 

+ 0 - 36
src/server/models/config.js

@@ -6,12 +6,6 @@
 module.exports = function(crowi) {
   const mongoose = require('mongoose');
 
-  const SECURITY_RESTRICT_GUEST_MODE_DENY = 'Deny';
-  const SECURITY_RESTRICT_GUEST_MODE_READONLY = 'Readonly';
-  const SECURITY_REGISTRATION_MODE_OPEN = 'Open';
-  const SECURITY_REGISTRATION_MODE_RESTRICTED = 'Resricted';
-  const SECURITY_REGISTRATION_MODE_CLOSED = 'Closed';
-
   const configSchema = new mongoose.Schema({
     ns: { type: String, required: true, index: true },
     key: { type: String, required: true, index: true },
@@ -161,23 +155,6 @@ module.exports = function(crowi) {
     return getDefaultNotificationConfigs();
   };
 
-  configSchema.statics.getRestrictGuestModeLabels = function() {
-    const labels = {};
-    labels[SECURITY_RESTRICT_GUEST_MODE_DENY] = 'security_setting.guest_mode.deny';
-    labels[SECURITY_RESTRICT_GUEST_MODE_READONLY] = 'security_setting.guest_mode.readonly';
-
-    return labels;
-  };
-
-  configSchema.statics.getRegistrationModeLabels = function() {
-    const labels = {};
-    labels[SECURITY_REGISTRATION_MODE_OPEN] = 'security_setting.registration_mode.open';
-    labels[SECURITY_REGISTRATION_MODE_RESTRICTED] = 'security_setting.registration_mode.restricted';
-    labels[SECURITY_REGISTRATION_MODE_CLOSED] = 'security_setting.registration_mode.closed';
-
-    return labels;
-  };
-
   configSchema.statics.getLocalconfig = function() {
     const env = process.env;
 
@@ -216,20 +193,7 @@ module.exports = function(crowi) {
     return localConfig;
   };
 
-  configSchema.statics.userUpperLimit = function(crowi) {
-    const key = 'USER_UPPER_LIMIT';
-    const env = crowi.env[key];
-
-    if (undefined === crowi.env || undefined === crowi.env[key]) {
-      return 0;
-    }
-    return Number(env);
-  };
-
   const Config = mongoose.model('Config', configSchema);
-  Config.SECURITY_REGISTRATION_MODE_OPEN = SECURITY_REGISTRATION_MODE_OPEN;
-  Config.SECURITY_REGISTRATION_MODE_RESTRICTED = SECURITY_REGISTRATION_MODE_RESTRICTED;
-  Config.SECURITY_REGISTRATION_MODE_CLOSED = SECURITY_REGISTRATION_MODE_CLOSED;
 
   return Config;
 };

+ 7 - 7
src/server/models/user.js

@@ -78,8 +78,7 @@ module.exports = function(crowi) {
   function decideUserStatusOnRegistration() {
     validateCrowi();
 
-    const Config = crowi.model('Config');
-    const configManager = crowi.configManager;
+    const { configManager, aclService } = crowi;
 
     const isInstalled = configManager.getConfig('crowi', 'app:installed');
     if (!isInstalled) {
@@ -89,10 +88,10 @@ module.exports = function(crowi) {
     // status decided depends on registrationMode
     const registrationMode = configManager.getConfig('crowi', 'security:registrationMode');
     switch (registrationMode) {
-      case Config.SECURITY_REGISTRATION_MODE_OPEN:
+      case aclService.labels.SECURITY_REGISTRATION_MODE_OPEN:
         return STATUS_ACTIVE;
-      case Config.SECURITY_REGISTRATION_MODE_RESTRICTED:
-      case Config.SECURITY_REGISTRATION_MODE_CLOSED: // 一応
+      case aclService.labels.SECURITY_REGISTRATION_MODE_RESTRICTED:
+      case aclService.labels.SECURITY_REGISTRATION_MODE_CLOSED: // 一応
         return STATUS_REGISTERED;
       default:
         return STATUS_ACTIVE; // どっちにすんのがいいんだろうな
@@ -510,8 +509,9 @@ module.exports = function(crowi) {
   };
 
   userSchema.statics.isUserCountExceedsUpperLimit = async function() {
-    const Config = crowi.model('Config');
-    const userUpperLimit = Config.userUpperLimit(crowi);
+    const { aclService } = crowi;
+
+    const userUpperLimit = aclService.userUpperLimit();
     if (userUpperLimit === 0) {
       return false;
     }

+ 1 - 2
src/server/routes/admin.js

@@ -407,8 +407,7 @@ module.exports = function(crowi, app) {
   actions.user = {};
   actions.user.index = async function(req, res) {
     const activeUsers = await User.countListByStatus(User.STATUS_ACTIVE);
-    const Config = crowi.model('Config');
-    const userUpperLimit = Config.userUpperLimit(crowi);
+    const userUpperLimit = aclService.userUpperLimit();
     const isUserCountExceedsUpperLimit = await User.isUserCountExceedsUpperLimit();
 
     const page = parseInt(req.query.page) || 1;

+ 3 - 4
src/server/routes/login.js

@@ -10,8 +10,7 @@ module.exports = function(crowi, app) {
   const async = require('async');
   const mailer = crowi.getMailer();
   const User = crowi.model('User');
-  const Config = crowi.model('Config');
-  const { configManager, appService } = crowi;
+  const { configManager, appService, aclService } = crowi;
 
   const actions = {};
 
@@ -108,7 +107,7 @@ module.exports = function(crowi, app) {
     }
 
     // config で closed ならさよなら
-    if (configManager.getConfig('crowi', 'security:registrationMode') == Config.SECURITY_REGISTRATION_MODE_CLOSED) {
+    if (configManager.getConfig('crowi', 'security:registrationMode') == aclService.labels.SECURITY_REGISTRATION_MODE_CLOSED) {
       return res.redirect('/');
     }
 
@@ -156,7 +155,7 @@ module.exports = function(crowi, app) {
 
           // 作成後、承認が必要なモードなら、管理者に通知する
           const appTitle = appService.getAppTitle();
-          if (configManager.getConfig('crowi', 'security:registrationMode') === Config.SECURITY_REGISTRATION_MODE_RESTRICTED) {
+          if (configManager.getConfig('crowi', 'security:registrationMode') === aclService.labels.SECURITY_REGISTRATION_MODE_RESTRICTED) {
             // TODO send mail
             User.findAdmins((err, admins) => {
               async.each(

+ 36 - 7
src/server/service/acl.js

@@ -1,11 +1,5 @@
 const logger = require('@alias/logger')('growi:service:AclService'); // eslint-disable-line no-unused-vars
 
-// const SECURITY_RESTRICT_GUEST_MODE_DENY = 'Deny';
-const SECURITY_RESTRICT_GUEST_MODE_READONLY = 'Readonly';
-// const SECURITY_REGISTRATION_MODE_OPEN = 'Open';
-// const SECURITY_REGISTRATION_MODE_RESTRICTED = 'Resricted';
-// const SECURITY_REGISTRATION_MODE_CLOSED = 'Closed';
-
 /**
  * the service class of AclService
  */
@@ -13,6 +7,13 @@ class AclService {
 
   constructor(configManager) {
     this.configManager = configManager;
+    this.labels = {
+      SECURITY_RESTRICT_GUEST_MODE_DENY: 'Deny',
+      SECURITY_RESTRICT_GUEST_MODE_READONLY: 'Readonly',
+      SECURITY_REGISTRATION_MODE_OPEN: 'Open',
+      SECURITY_REGISTRATION_MODE_RESTRICTED: 'Resricted',
+      SECURITY_REGISTRATION_MODE_CLOSED: 'Closed',
+    };
   }
 
   getIsPublicWikiOnly() {
@@ -35,7 +36,35 @@ class AclService {
       return false;
     }
 
-    return SECURITY_RESTRICT_GUEST_MODE_READONLY === isRestrictGuestMode;
+    return this.labels.SECURITY_RESTRICT_GUEST_MODE_READONLY === isRestrictGuestMode;
+  }
+
+  getRestrictGuestModeLabels() {
+    const labels = {};
+    labels[this.labels.SECURITY_RESTRICT_GUEST_MODE_DENY] = 'security_setting.guest_mode.deny';
+    labels[this.labels.SECURITY_RESTRICT_GUEST_MODE_READONLY] = 'security_setting.guest_mode.readonly';
+
+    return labels;
+  }
+
+  getRegistrationModeLabels() {
+    const labels = {};
+    labels[this.labelsSECURITY_REGISTRATION_MODE_OPEN] = 'security_setting.registration_mode.open';
+    labels[this.labelsSECURITY_REGISTRATION_MODE_RESTRICTED] = 'security_setting.registration_mode.restricted';
+    labels[this.labels.SECURITY_REGISTRATION_MODE_CLOSED] = 'security_setting.registration_mode.closed';
+
+    return labels;
+  }
+
+  userUpperLimit() {
+    // const limit = this.configManager.getConfig('crowi', 'USER_UPPER_LIMIT');
+    const limit = process.env.USER_UPPER_LIMIT;
+
+    if (limit) {
+      return Number(limit);
+    }
+
+    return 0;
   }
 
 }