Shun Miyazawa пре 3 година
родитељ
комит
34f2d24497
2 измењених фајлова са 77 додато и 12 уклоњено
  1. 4 4
      packages/app/src/server/routes/index.js
  2. 73 8
      packages/app/src/server/routes/page.js

+ 4 - 4
packages/app/src/server/routes/index.js

@@ -73,7 +73,7 @@ module.exports = function(crowi, app) {
   // API v3 for auth
   // API v3 for auth
   app.use('/_api/v3', apiV3AuthRouter);
   app.use('/_api/v3', apiV3AuthRouter);
 
 
-  app.get('/'                         , applicationInstalled, unavailableWhenMaintenanceMode, loginRequired, addActivity, autoReconnectToSearch, injectUserUISettings, page.showTopPage);
+  app.get('/'                         , applicationInstalled, unavailableWhenMaintenanceMode, loginRequired, autoReconnectToSearch, injectUserUISettings, page.showTopPage);
 
 
   app.get('/login/error/:reason'      , applicationInstalled, login.error);
   app.get('/login/error/:reason'      , applicationInstalled, login.error);
   app.get('/login'                    , applicationInstalled, login.preLogin, login.login);
   app.get('/login'                    , applicationInstalled, login.preLogin, login.login);
@@ -245,9 +245,9 @@ module.exports = function(crowi, app) {
 
 
   app.use('/ogp', express.Router().get('/:pageId([0-9a-z]{0,})', loginRequired, ogp.pageIdRequired, ogp.ogpValidator, ogp.renderOgp));
   app.use('/ogp', express.Router().get('/:pageId([0-9a-z]{0,})', loginRequired, ogp.pageIdRequired, ogp.ogpValidator, ogp.renderOgp));
 
 
-  app.get('/:id([0-9a-z]{24})'       , loginRequired , addActivity, injectUserUISettings, page.showPage);
+  app.get('/:id([0-9a-z]{24})'       , loginRequired , injectUserUISettings, page.showPage);
 
 
-  app.get('/*/$'                   , loginRequired , addActivity, injectUserUISettings, page.redirectorWithEndOfSlash);
-  app.get('/*'                     , loginRequired , addActivity, autoReconnectToSearch, injectUserUISettings, page.redirector);
+  app.get('/*/$'                   , loginRequired , injectUserUISettings, page.redirectorWithEndOfSlash);
+  app.get('/*'                     , loginRequired , autoReconnectToSearch, injectUserUISettings, page.redirector);
 
 
 };
 };

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

@@ -4,6 +4,7 @@ import mongoose from 'mongoose';
 import urljoin from 'url-join';
 import urljoin from 'url-join';
 
 
 import { SupportedTargetModel, SupportedAction } from '~/interfaces/activity';
 import { SupportedTargetModel, SupportedAction } from '~/interfaces/activity';
+import Activity from '~/server/models/activity';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
 import { PathAlreadyExistsError } from '../models/errors';
 import { PathAlreadyExistsError } from '../models/errors';
@@ -411,8 +412,24 @@ module.exports = function(crowi, app) {
 
 
     await addRenderVarsForPageTree(renderVars, portalPath, req.user);
     await addRenderVarsForPageTree(renderVars, portalPath, req.user);
 
 
-    const parameters = { action: SupportedAction.ACTION_PAGE_VIEW };
-    activityEvent.emit('update', res.locals.activity._id, parameters);
+    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);
+      }
+    }
 
 
     return res.render(view, renderVars);
     return res.render(view, renderVars);
   }
   }
@@ -472,8 +489,24 @@ module.exports = function(crowi, app) {
 
 
     await addRenderVarsForPageTree(renderVars, path, req.user);
     await addRenderVarsForPageTree(renderVars, path, req.user);
 
 
-    const parameters = { action: SupportedAction.ACTION_PAGE_VIEW };
-    activityEvent.emit('update', res.locals.activity._id, parameters);
+    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);
+      }
+    }
 
 
     return res.render(view, renderVars);
     return res.render(view, renderVars);
   }
   }
@@ -655,8 +688,24 @@ module.exports = function(crowi, app) {
   actions.redirector = async function(req, res, next) {
   actions.redirector = async function(req, res, next) {
     const path = getPathFromRequest(req);
     const path = getPathFromRequest(req);
 
 
-    const parameters = { action: SupportedAction.ACTION_PAGE_VIEW };
-    activityEvent.emit('update', res.locals.activity._id, parameters);
+    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);
+      }
+    }
 
 
     return redirector(req, res, next, path);
     return redirector(req, res, next, path);
   };
   };
@@ -665,8 +714,24 @@ module.exports = function(crowi, app) {
     const _path = getPathFromRequest(req);
     const _path = getPathFromRequest(req);
     const path = pathUtils.removeTrailingSlash(_path);
     const path = pathUtils.removeTrailingSlash(_path);
 
 
-    const parameters = { action: SupportedAction.ACTION_PAGE_VIEW };
-    activityEvent.emit('update', res.locals.activity._id, parameters);
+    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);
+      }
+    }
 
 
     return redirector(req, res, next, path);
     return redirector(req, res, next, path);
   };
   };