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

+ 2 - 2
packages/app/.env.development

@@ -29,8 +29,8 @@ OGP_URI="http://ogp:8088"
 # SLACKBOT_WITHOUT_PROXY_BOT_TOKEN=''
 # GROWI_CLOUD_URI='http://growi.cloud'
 # GROWI_APP_ID_FOR_GROWI_CLOUD=012345
-# AUDIT_LOG_ENABLED=false
+AUDIT_LOG_ENABLED=true
 # ACTIVITY_EXPIRATION_SECONDS=2592000
 # AUDIT_LOG_ACTION_GROUP_SIZE=SMALL
-# AUDIT_LOG_ADDITIONAL_ACTIONS=
+AUDIT_LOG_ADDITIONAL_ACTIONS=PAGE_VIEW
 # AUDIT_LOG_EXCLUDE_ACTIONS=

+ 40 - 73
packages/app/src/server/routes/page.js

@@ -412,24 +412,16 @@ module.exports = function(crowi, app) {
 
     await addRenderVarsForPageTree(renderVars, portalPath, req.user);
 
-    const shoudCreateActivity = crowi.activityService.shoudUpdateActivity(SupportedAction.ACTION_PAGE_VIEW);
-    if (shoudCreateActivity) {
-      const parameter = {
-        ip:  req.ip,
-        endpoint: req.originalUrl,
-        action: SupportedAction.ACTION_PAGE_VIEW,
-        user: req.user?._id,
-        snapshot: {
-          username: req.user?.username,
-        },
-      };
-      try {
-        await Activity.createByParameters(parameter);
-      }
-      catch (err) {
-        logger.error('Create activity failed', err);
-      }
-    }
+    const parameters = {
+      ip:  req.ip,
+      endpoint: req.originalUrl,
+      action: SupportedAction.ACTION_PAGE_VIEW,
+      user: req.user?._id,
+      snapshot: {
+        username: req.user?.username,
+      },
+    };
+    crowi.activityService.createActivity(SupportedAction.ACTION_PAGE_VIEW, parameters);
 
     return res.render(view, renderVars);
   }
@@ -489,24 +481,16 @@ module.exports = function(crowi, app) {
 
     await addRenderVarsForPageTree(renderVars, path, req.user);
 
-    const shoudCreateActivity = crowi.activityService.shoudUpdateActivity(SupportedAction.ACTION_PAGE_VIEW);
-    if (shoudCreateActivity) {
-      const parameter = {
-        ip:  req.ip,
-        endpoint: req.originalUrl,
-        action: SupportedAction.ACTION_PAGE_VIEW,
-        user: req.user?._id,
-        snapshot: {
-          username: req.user?.username,
-        },
-      };
-      try {
-        await Activity.createByParameters(parameter);
-      }
-      catch (err) {
-        logger.error('Create activity failed', err);
-      }
-    }
+    const parameters = {
+      ip:  req.ip,
+      endpoint: req.originalUrl,
+      action: SupportedAction.ACTION_PAGE_VIEW,
+      user: req.user?._id,
+      snapshot: {
+        username: req.user?.username,
+      },
+    };
+    crowi.activityService.createActivity(SupportedAction.ACTION_PAGE_VIEW, parameters);
 
     return res.render(view, renderVars);
   }
@@ -688,25 +672,16 @@ module.exports = function(crowi, app) {
   actions.redirector = async function(req, res, next) {
     const path = getPathFromRequest(req);
 
-    const shoudCreateActivity = crowi.activityService.shoudUpdateActivity(SupportedAction.ACTION_PAGE_VIEW);
-    if (shoudCreateActivity) {
-      const parameter = {
-        ip:  req.ip,
-        endpoint: req.originalUrl,
-        action: SupportedAction.ACTION_PAGE_VIEW,
-        user: req.user?._id,
-        snapshot: {
-          username: req.user?.username,
-        },
-      };
-      try {
-        await Activity.createByParameters(parameter);
-      }
-      catch (err) {
-        logger.error('Create activity failed', err);
-      }
-    }
-
+    const parameters = {
+      ip:  req.ip,
+      endpoint: req.originalUrl,
+      action: SupportedAction.ACTION_PAGE_VIEW,
+      user: req.user?._id,
+      snapshot: {
+        username: req.user?.username,
+      },
+    };
+    crowi.activityService.createActivity(SupportedAction.ACTION_PAGE_VIEW, parameters);
     return redirector(req, res, next, path);
   };
 
@@ -714,24 +689,16 @@ module.exports = function(crowi, app) {
     const _path = getPathFromRequest(req);
     const path = pathUtils.removeTrailingSlash(_path);
 
-    const shoudCreateActivity = crowi.activityService.shoudUpdateActivity(SupportedAction.ACTION_PAGE_VIEW);
-    if (shoudCreateActivity) {
-      const parameter = {
-        ip:  req.ip,
-        endpoint: req.originalUrl,
-        action: SupportedAction.ACTION_PAGE_VIEW,
-        user: req.user?._id,
-        snapshot: {
-          username: req.user?.username,
-        },
-      };
-      try {
-        await Activity.createByParameters(parameter);
-      }
-      catch (err) {
-        logger.error('Create activity failed', err);
-      }
-    }
+    const parameters = {
+      ip:  req.ip,
+      endpoint: req.originalUrl,
+      action: SupportedAction.ACTION_PAGE_VIEW,
+      user: req.user?._id,
+      snapshot: {
+        username: req.user?.username,
+      },
+    };
+    crowi.activityService.createActivity(SupportedAction.ACTION_PAGE_VIEW, parameters);
 
     return redirector(req, res, next, path);
   };

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

@@ -1,7 +1,7 @@
 import mongoose from 'mongoose';
 
 import {
-  IActivity, SupportedActionType, AllSupportedActions, ActionGroupSize,
+  IActivity, SupportedAction, SupportedActionType, AllSupportedActions, ActionGroupSize,
   AllEssentialActions, AllSmallGroupActions, AllMediumGroupActions, AllLargeGroupActions,
 } from '~/interfaces/activity';
 import { IPage } from '~/interfaces/page';
@@ -102,6 +102,19 @@ class ActivityService {
     return this.getAvailableActions().includes(action);
   }
 
+  // for GET request
+  createActivity = async function(action: SupportedActionType, parameters): Promise<void> {
+    const shoudCreateActivity = this.crowi.activityService.shoudUpdateActivity(action);
+    if (shoudCreateActivity) {
+      try {
+        await Activity.createByParameters(parameters);
+      }
+      catch (err) {
+        logger.error('Create activity failed', err);
+      }
+    }
+  };
+
   createTtlIndex = async function() {
     const configManager = this.crowi.configManager;
     const activityExpirationSeconds = configManager != null ? configManager.getConfig('crowi', 'app:activityExpirationSeconds') : 2592000;