Răsfoiți Sursa

Merge pull request #6080 from weseek/feat/98322

feat: Create activity when "App Setting" is updated
Shun Miyazawa 3 ani în urmă
părinte
comite
84ce9de9ea

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

@@ -35,6 +35,7 @@ const ACTION_PAGE_REVERT = 'PAGE_REVERT';
 const ACTION_COMMENT_CREATE = 'COMMENT_CREATE';
 const ACTION_COMMENT_UPDATE = 'COMMENT_UPDATE';
 const ACTION_COMMENT_REMOVE = 'COMMENT_REMOVE';
+const ACTION_ADMIN_APP_SETTING_UPDATE = 'ADMIN_APP_SETTING_UPDATE';
 
 export const SupportedTargetModel = {
   MODEL_PAGE,
@@ -73,6 +74,7 @@ export const SupportedAction = {
   ACTION_COMMENT_CREATE,
   ACTION_COMMENT_UPDATE,
   ACTION_COMMENT_REMOVE,
+  ACTION_ADMIN_APP_SETTING_UPDATE,
 } as const;
 
 export const SupportedActionToNotified = {

+ 11 - 1
packages/app/src/server/routes/apiv3/app-settings.js

@@ -1,10 +1,13 @@
 import { body } from 'express-validator';
 
+import { SupportedAction } from '~/interfaces/activity';
 import { allLocales } from '~/next-i18next.config';
 import loggerFactory from '~/utils/logger';
 
+import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
 import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
 
+
 const logger = loggerFactory('growi:routes:apiv3:app-settings');
 
 const debug = require('debug')('growi:routes:admin');
@@ -151,6 +154,9 @@ module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);
   const csrf = require('../../middlewares/csrf')(crowi);
+  const addActivity = generateAddActivityMiddleware(crowi);
+
+  const activityEvent = crowi.event('activity');
 
   const validator = {
     appSetting: [
@@ -294,7 +300,7 @@ module.exports = (crowi) => {
    *                schema:
    *                  $ref: '#/components/schemas/AppSettingParams'
    */
-  router.put('/app-setting', loginRequiredStrictly, adminRequired, csrf, validator.appSetting, apiV3FormValidator, async(req, res) => {
+  router.put('/app-setting', loginRequiredStrictly, adminRequired, csrf, addActivity, validator.appSetting, apiV3FormValidator, async(req, res) => {
     const requestAppSettingParams = {
       'app:title': req.body.title,
       'app:confidential': req.body.confidential,
@@ -312,6 +318,10 @@ module.exports = (crowi) => {
         isEmailPublishedForNewUser: crowi.configManager.getConfig('crowi', 'customize:isEmailPublishedForNewUser'),
         fileUpload: crowi.configManager.getConfig('crowi', 'app:fileUpload'),
       };
+
+      const parameters = { action: SupportedAction.ACTION_ADMIN_APP_SETTING_UPDATE };
+      activityEvent.emit('update', res.locals.activity._id, parameters);
+
       return res.apiv3({ appSettingParams });
     }
     catch (err) {