Ver código fonte

fix using api

WESEEK Kaito 6 anos atrás
pai
commit
deb6537854

+ 1 - 1
src/client/js/components/Admin/Security/LocalSecuritySetting.jsx

@@ -139,7 +139,7 @@ class LocalSecuritySetting extends React.Component {
                     type="textarea"
                     type="textarea"
                     name="registrationWhiteList"
                     name="registrationWhiteList"
                     placeholder={adminGeneralSecurityContainer.state.registrationWhiteList}
                     placeholder={adminGeneralSecurityContainer.state.registrationWhiteList}
-                    value={adminGeneralSecurityContainer.state.registrationWhiteList}
+                    defaultValue={adminGeneralSecurityContainer.state.registrationWhiteList}
                     onChange={e => adminGeneralSecurityContainer.changeRegistrationWhiteList(e.target.value)}
                     onChange={e => adminGeneralSecurityContainer.changeRegistrationWhiteList(e.target.value)}
                   />
                   />
                   <p className="help-block small">{ t('security_setting.restrict_emails') }<br />{ t('security_setting.for_instance') }
                   <p className="help-block small">{ t('security_setting.restrict_emails') }<br />{ t('security_setting.for_instance') }

+ 5 - 3
src/client/js/services/AdminGeneralSecurityContainer.js

@@ -27,7 +27,7 @@ export default class AdminGeneralSecurityContainer extends Container {
       appSiteUrl: appContainer.config.crowi.url || '',
       appSiteUrl: appContainer.config.crowi.url || '',
       isLocalEnabled: true,
       isLocalEnabled: true,
       registrationMode: 'open',
       registrationMode: 'open',
-      registrationWhiteList: [],
+      registrationWhiteList: '',
       isLdapEnabled: true,
       isLdapEnabled: true,
       isSamlEnabled: true,
       isSamlEnabled: true,
       isOidcEnabled: true,
       isOidcEnabled: true,
@@ -51,7 +51,7 @@ export default class AdminGeneralSecurityContainer extends Container {
       isHideRestrictedByOwner: generalSetting.hideRestrictedByOwner || false,
       isHideRestrictedByOwner: generalSetting.hideRestrictedByOwner || false,
       isHideRestrictedByGroup: generalSetting.hideRestrictedByGroup || false,
       isHideRestrictedByGroup: generalSetting.hideRestrictedByGroup || false,
       wikiMode: generalSetting.wikiMode || '',
       wikiMode: generalSetting.wikiMode || '',
-      isLocalEnabled: localSetting.isLocalEnabled || 'true',
+      isLocalEnabled: localSetting.isLocalEnabled || false,
       registrationMode: localSetting.registrationMode || 'open',
       registrationMode: localSetting.registrationMode || 'open',
       registrationWhiteList: localSetting.registrationWhiteList || '',
       registrationWhiteList: localSetting.registrationWhiteList || '',
     });
     });
@@ -144,10 +144,12 @@ export default class AdminGeneralSecurityContainer extends Container {
   * update local security setting
   * update local security setting
   */
   */
   async updateLocalSecuritySetting() {
   async updateLocalSecuritySetting() {
+    let { registrationWhiteList } = this.state;
+    registrationWhiteList = Array.isArray(registrationWhiteList) ? registrationWhiteList : registrationWhiteList.split('\n');
     const response = await this.appContainer.apiv3.put('/security-setting/local-setting', {
     const response = await this.appContainer.apiv3.put('/security-setting/local-setting', {
       isLocalEnabled: this.state.isLocalEnabled,
       isLocalEnabled: this.state.isLocalEnabled,
       registrationMode: this.state.registrationMode,
       registrationMode: this.state.registrationMode,
-      registrationWhiteList: this.state.registrationWhiteList,
+      registrationWhiteList,
     });
     });
     const { localSecuritySettingParams } = response.data;
     const { localSecuritySettingParams } = response.data;
     return localSecuritySettingParams;
     return localSecuritySettingParams;

+ 49 - 1
src/server/routes/apiv3/security-setting.js

@@ -19,6 +19,11 @@ const validator = {
     body('hideRestrictedByOwner').isBoolean(),
     body('hideRestrictedByOwner').isBoolean(),
     body('hideRestrictedByGroup').isBoolean(),
     body('hideRestrictedByGroup').isBoolean(),
   ],
   ],
+  localSetting: [
+    body('isLocalEnabled').isBoolean(),
+    body('registrationMode').isString(),
+    body('registrationWhiteList').isArray(),
+  ],
   ldapAuth: [
   ldapAuth: [
     body('serverUrl').isString(),
     body('serverUrl').isString(),
     body('isUserBind').isBoolean(),
     body('isUserBind').isBoolean(),
@@ -215,7 +220,7 @@ module.exports = (crowi) => {
       localSetting: {
       localSetting: {
         isLocalEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-local:isEnabled'),
         isLocalEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-local:isEnabled'),
         registrationMode: await crowi.configManager.getConfig('crowi', 'security:registrationMode'),
         registrationMode: await crowi.configManager.getConfig('crowi', 'security:registrationMode'),
-        registrationwhiteList: await crowi.configManager.getConfig('crowi', 'security:registrationWhiteList'),
+        registrationWhiteList: await crowi.configManager.getConfig('crowi', 'security:registrationWhiteList'),
       },
       },
     };
     };
     return res.apiv3({ securityParams });
     return res.apiv3({ securityParams });
@@ -271,6 +276,49 @@ module.exports = (crowi) => {
     }
     }
   });
   });
 
 
+  /**
+   * @swagger
+   *
+   *    /_api/v3/security-setting/local-setting:
+   *      put:
+   *        tags: [SecuritySetting]
+   *        description: Update local Setting
+   *        requestBody:
+   *          required: true
+   *          content:
+   *            application/json:
+   *              schema:
+   *                $ref: '#/components/schemas/LocalSetting'
+   *        responses:
+   *          200:
+   *            description: Succeeded to update local Setting
+   *            content:
+   *              application/json:
+   *                schema:
+   *                  $ref: '#/components/schemas/LocalSetting'
+   */
+  router.put('/local-setting', loginRequiredStrictly, adminRequired, csrf, validator.localSetting, ApiV3FormValidator, async(req, res) => {
+    const requestParams = {
+      'security:passport-local:isEnabled': req.body.isLocalEnabled,
+      'security:registrationMode': req.body.registrationMode,
+      'security:registrationWhiteList': req.body.registrationWhiteList,
+    };
+    try {
+      await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestParams);
+      const localSettingParams = {
+        isLocalEnabled: await crowi.configManager.getConfig('crowi', 'security:passport-local:isEnabled'),
+        registrationMode: await crowi.configManager.getConfig('crowi', 'security:registrationMode'),
+        registrationWhiteList: await crowi.configManager.getConfig('crowi', 'security:registrationWhiteList'),
+      };
+      return res.apiv3({ localSettingParams });
+    }
+    catch (err) {
+      const msg = 'Error occurred in updating local setting';
+      logger.error('Error', err);
+      return res.apiv3Err(new ErrorV3(msg, 'update-local-setting failed'));
+    }
+  });
+
   /**
   /**
    * @swagger
    * @swagger
    *
    *