Просмотр исходного кода

impl put route /questionnaire-settings

Taichi Masuyama 3 лет назад
Родитель
Сommit
c238b26805
1 измененных файлов с 37 добавлено и 0 удалено
  1. 37 0
      packages/app/src/server/routes/apiv3/app-settings.js

+ 37 - 0
packages/app/src/server/routes/apiv3/app-settings.js

@@ -198,6 +198,10 @@ module.exports = (crowi) => {
       body('s3SecretAccessKey').trim(),
       body('s3ReferenceFileWithRelayMode').if(value => value != null).isBoolean(),
     ],
+    questionnaireSettings: [
+      body('isEnableQuestionnaire').isBoolean(),
+      body('isAppSiteUrlHashed').isBoolean(),
+    ],
     maintenanceMode: [
       body('flag').isBoolean(),
     ],
@@ -266,6 +270,10 @@ module.exports = (crowi) => {
       envGcsUploadNamespace: crowi.configManager.getConfigFromEnvVars('crowi', 'gcs:uploadNamespace'),
 
       isEnabledPlugins: crowi.configManager.getConfig('crowi', 'plugin:isEnabledPlugins'),
+
+      isEnableQuestionnaire: crowi.configManager.getConfig('crowi', 'questionnaire:isEnableQuestionnaire'),
+      isAppSiteUrlHashed: crowi.configManager.getConfig('crowi', 'questionnaire:isAppSiteUrlHashed'),
+
       isMaintenanceMode: crowi.configManager.getConfig('crowi', 'app:isMaintenanceMode'),
     };
     return res.apiv3({ appSettingsParams });
@@ -670,6 +678,35 @@ module.exports = (crowi) => {
 
   });
 
+  // eslint-disable-next-line max-len
+  router.put('/questionnaire-settings', loginRequiredStrictly, adminRequired, addActivity, validator.questionnaireSettings, apiV3FormValidator, async(req, res) => {
+    const { isEnableQuestionnaire, isAppSiteUrlHashed } = req.body;
+
+    const requestParams = {
+      'questionnaire:isEnableQuestionnaire': isEnableQuestionnaire,
+      'questionnaire:isAppSiteUrlHashed': isAppSiteUrlHashed,
+    };
+
+    try {
+      await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestParams, true);
+
+      const responseParams = {
+        isEnableQuestionnaire: crowi.configManager.getConfig('crowi', 'questionnaire:isEnableQuestionnaire'),
+        isAppSiteUrlHashed: crowi.configManager.getConfig('crowi', 'questionnaire:isAppSiteUrlHashed'),
+      };
+
+      const parameters = { action: SupportedAction.ACTION_ADMIN_QUESTIONNAIRE_SETTINGS_UPDATE };
+      activityEvent.emit('update', res.locals.activity._id, parameters);
+      return res.apiv3({ responseParams });
+    }
+    catch (err) {
+      const msg = 'Error occurred in updating questionnaire settings';
+      logger.error('Error', err);
+      return res.apiv3Err(new ErrorV3(msg, 'update-questionnaire-settings-failed'));
+    }
+
+  });
+
   router.post('/v5-schema-migration', accessTokenParser, loginRequiredStrictly, adminRequired, async(req, res) => {
     const isMaintenanceMode = crowi.appService.isMaintenanceMode();
     if (!isMaintenanceMode) {