Shun Miyazawa 3 лет назад
Родитель
Сommit
497a70096e

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

@@ -75,6 +75,12 @@ export const SupportedAction = {
   ACTION_COMMENT_REMOVE,
 } as const;
 
+export const ActionGroupSize = {
+  Small: 'SMALL',
+  Medium: 'MEDIUM',
+  Large: 'LARGE',
+} as const;
+
 export const SmallActionGroup = {
   ACTION_LOGIN_SUCCESS,
   ACTION_LOGIN_FAILURE,

+ 19 - 1
packages/app/src/server/service/activity.ts

@@ -1,6 +1,8 @@
 import mongoose from 'mongoose';
 
-import { IActivity } from '~/interfaces/activity';
+import {
+  IActivity, SupportedActionType, ActionGroupSize, AllSmallAction, AllMediumAction, AllLargeAction,
+} from '~/interfaces/activity';
 import { IPage } from '~/interfaces/page';
 import Activity from '~/server/models/activity';
 
@@ -38,6 +40,22 @@ class ActivityService {
     });
   }
 
+  shoudCreateActivity = function(action: SupportedActionType): boolean {
+    const configManager = this.crowi.configManager;
+    const auditLogActionGroupSize = configManager != null ? configManager.getConfig('crowi', 'app:auditLogActionGroupSize') : 'SMALL';
+
+    switch (auditLogActionGroupSize) {
+      case ActionGroupSize.Small:
+        return (AllSmallAction as ReadonlyArray<string>).includes(action);
+      case ActionGroupSize.Medium:
+        return (AllMediumAction as ReadonlyArray<string>).includes(action);
+      case ActionGroupSize.Large:
+        return (AllLargeAction as ReadonlyArray<string>).includes(action);
+      default:
+        return false;
+    }
+  }
+
   createTtlIndex = async function() {
     const configManager = this.crowi.configManager;
     const activityExpirationSeconds = configManager != null ? configManager.getConfig('crowi', 'app:activityExpirationSeconds') : 2592000;