Browse Source

add file upload activity

keigo-h 3 years ago
parent
commit
9aab23b96c

+ 3 - 0
packages/app/src/interfaces/activity.ts

@@ -40,6 +40,7 @@ const ACTION_ADMIN_SITE_URL_UPDATE = 'ADMIN_SITE_URL_UPDATE';
 const ACTION_ADMIN_MAIL_SMTP_UPDATE = 'ADMIN_MAIL_SMTP_UPDATE';
 const ACTION_ADMIN_MAIL_SES_UPDATE = 'ADMIN_MAIL_SES_UPDATE';
 const ACTION_ADMIN_MAIL_TEST_SUBMIT = 'ADMIN_MAIL_TEST_SUBMIT ';
+const ACTION_ADMIN_FILE_UPLOAD_CONFIG_UPDATE = 'ADMIN_FILE_UPLOAD_CONFIG_UPDATE';
 const ACTION_ADMIN_SECURITY_SETTINGS_UPDATE = 'ADMIN_SECURITY_SETTINGS_UPDATE';
 const ACTION_ADMIN_LINE_BREAK_UPDATE = 'ADMIN_LINE_BREAK_UPDATE';
 const ACTION_ADMIN_LAYOUT_UPDATE = 'ADMIN_LAYOUT_UPDATE';
@@ -96,6 +97,7 @@ export const SupportedAction = {
   ACTION_ADMIN_MAIL_SMTP_UPDATE,
   ACTION_ADMIN_MAIL_SES_UPDATE,
   ACTION_ADMIN_MAIL_TEST_SUBMIT,
+  ACTION_ADMIN_FILE_UPLOAD_CONFIG_UPDATE,
   ACTION_ADMIN_SECURITY_SETTINGS_UPDATE,
   ACTION_ADMIN_LINE_BREAK_UPDATE,
   ACTION_ADMIN_LAYOUT_UPDATE,
@@ -159,6 +161,7 @@ export const LargeActionGroup = {
   ACTION_ADMIN_MAIL_SMTP_UPDATE,
   ACTION_ADMIN_MAIL_SES_UPDATE,
   ACTION_ADMIN_MAIL_TEST_SUBMIT,
+  ACTION_ADMIN_FILE_UPLOAD_CONFIG_UPDATE,
   ACTION_ADMIN_SECURITY_SETTINGS_UPDATE,
   ACTION_ADMIN_LINE_BREAK_UPDATE,
   ACTION_ADMIN_LAYOUT_UPDATE,

+ 56 - 48
packages/app/src/server/routes/apiv3/app-settings.js

@@ -614,63 +614,71 @@ module.exports = (crowi) => {
    *                schema:
    *                  $ref: '#/components/schemas/FileUploadSettingParams'
    */
-  router.put('/file-upload-setting', loginRequiredStrictly, adminRequired, csrf, validator.fileUploadSetting, apiV3FormValidator, async(req, res) => {
-    const { fileUploadType } = req.body;
-
-    const requestParams = {
-      'app:fileUploadType': fileUploadType,
-    };
-
-    if (fileUploadType === 'gcs') {
-      requestParams['gcs:apiKeyJsonPath'] = req.body.gcsApiKeyJsonPath;
-      requestParams['gcs:bucket'] = req.body.gcsBucket;
-      requestParams['gcs:uploadNamespace'] = req.body.gcsUploadNamespace;
-      requestParams['gcs:referenceFileWithRelayMode'] = req.body.gcsReferenceFileWithRelayMode;
-    }
-
-    if (fileUploadType === 'aws') {
-      requestParams['aws:s3Region'] = req.body.s3Region;
-      requestParams['aws:s3CustomEndpoint'] = req.body.s3CustomEndpoint;
-      requestParams['aws:s3Bucket'] = req.body.s3Bucket;
-      requestParams['aws:s3AccessKeyId'] = req.body.s3AccessKeyId;
-      requestParams['aws:s3SecretAccessKey'] = req.body.s3SecretAccessKey;
-      requestParams['aws:referenceFileWithRelayMode'] = req.body.s3ReferenceFileWithRelayMode;
-    }
-
-    try {
-      await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestParams, true);
-      await crowi.setUpFileUpload(true);
-      crowi.fileUploaderSwitchService.publishUpdatedMessage();
-
-      const responseParams = {
-        fileUploadType: crowi.configManager.getConfig('crowi', 'app:fileUploadType'),
+  router.put(
+    '/file-upload-setting',
+    loginRequiredStrictly,
+    adminRequired, csrf,
+    addActivity,
+    validator.fileUploadSetting,
+    apiV3FormValidator, async(req, res) => {
+      const { fileUploadType } = req.body;
+
+      const requestParams = {
+        'app:fileUploadType': fileUploadType,
       };
 
       if (fileUploadType === 'gcs') {
-        responseParams.gcsApiKeyJsonPath = crowi.configManager.getConfig('crowi', 'gcs:apiKeyJsonPath');
-        responseParams.gcsBucket = crowi.configManager.getConfig('crowi', 'gcs:bucket');
-        responseParams.gcsUploadNamespace = crowi.configManager.getConfig('crowi', 'gcs:uploadNamespace');
-        responseParams.gcsReferenceFileWithRelayMode = crowi.configManager.getConfig('crowi', 'gcs:referenceFileWithRelayMode ');
+        requestParams['gcs:apiKeyJsonPath'] = req.body.gcsApiKeyJsonPath;
+        requestParams['gcs:bucket'] = req.body.gcsBucket;
+        requestParams['gcs:uploadNamespace'] = req.body.gcsUploadNamespace;
+        requestParams['gcs:referenceFileWithRelayMode'] = req.body.gcsReferenceFileWithRelayMode;
       }
 
       if (fileUploadType === 'aws') {
-        responseParams.s3Region = crowi.configManager.getConfig('crowi', 'aws:s3Region');
-        responseParams.s3CustomEndpoint = crowi.configManager.getConfig('crowi', 'aws:s3CustomEndpoint');
-        responseParams.s3Bucket = crowi.configManager.getConfig('crowi', 'aws:s3Bucket');
-        responseParams.s3AccessKeyId = crowi.configManager.getConfig('crowi', 'aws:s3AccessKeyId');
-        responseParams.s3SecretAccessKey = crowi.configManager.getConfig('crowi', 'aws:s3SecretAccessKey');
-        responseParams.s3ReferenceFileWithRelayMode = crowi.configManager.getConfig('crowi', 'aws:referenceFileWithRelayMode');
+        requestParams['aws:s3Region'] = req.body.s3Region;
+        requestParams['aws:s3CustomEndpoint'] = req.body.s3CustomEndpoint;
+        requestParams['aws:s3Bucket'] = req.body.s3Bucket;
+        requestParams['aws:s3AccessKeyId'] = req.body.s3AccessKeyId;
+        requestParams['aws:s3SecretAccessKey'] = req.body.s3SecretAccessKey;
+        requestParams['aws:referenceFileWithRelayMode'] = req.body.s3ReferenceFileWithRelayMode;
       }
 
-      return res.apiv3({ responseParams });
-    }
-    catch (err) {
-      const msg = 'Error occurred in updating fileUploadType';
-      logger.error('Error', err);
-      return res.apiv3Err(new ErrorV3(msg, 'update-fileUploadType-failed'));
-    }
+      try {
+        await crowi.configManager.updateConfigsInTheSameNamespace('crowi', requestParams, true);
+        await crowi.setUpFileUpload(true);
+        crowi.fileUploaderSwitchService.publishUpdatedMessage();
 
-  });
+        const responseParams = {
+          fileUploadType: crowi.configManager.getConfig('crowi', 'app:fileUploadType'),
+        };
+
+        if (fileUploadType === 'gcs') {
+          responseParams.gcsApiKeyJsonPath = crowi.configManager.getConfig('crowi', 'gcs:apiKeyJsonPath');
+          responseParams.gcsBucket = crowi.configManager.getConfig('crowi', 'gcs:bucket');
+          responseParams.gcsUploadNamespace = crowi.configManager.getConfig('crowi', 'gcs:uploadNamespace');
+          responseParams.gcsReferenceFileWithRelayMode = crowi.configManager.getConfig('crowi', 'gcs:referenceFileWithRelayMode ');
+        }
+
+        if (fileUploadType === 'aws') {
+          responseParams.s3Region = crowi.configManager.getConfig('crowi', 'aws:s3Region');
+          responseParams.s3CustomEndpoint = crowi.configManager.getConfig('crowi', 'aws:s3CustomEndpoint');
+          responseParams.s3Bucket = crowi.configManager.getConfig('crowi', 'aws:s3Bucket');
+          responseParams.s3AccessKeyId = crowi.configManager.getConfig('crowi', 'aws:s3AccessKeyId');
+          responseParams.s3SecretAccessKey = crowi.configManager.getConfig('crowi', 'aws:s3SecretAccessKey');
+          responseParams.s3ReferenceFileWithRelayMode = crowi.configManager.getConfig('crowi', 'aws:referenceFileWithRelayMode');
+        }
+        const parameters = { action: SupportedAction.ACTION_ADMIN_FILE_UPLOAD_CONFIG_UPDATE };
+        activityEvent.emit('update', res.locals.activity._id, parameters);
+        return res.apiv3({ responseParams });
+      }
+      catch (err) {
+        const msg = 'Error occurred in updating fileUploadType';
+        logger.error('Error', err);
+        return res.apiv3Err(new ErrorV3(msg, 'update-fileUploadType-failed'));
+      }
+
+    },
+  );
 
   /**
    * @swagger