Просмотр исходного кода

Generate activity when logged out

Shun Miyazawa 3 лет назад
Родитель
Сommit
246999ad44
2 измененных файлов с 21 добавлено и 2 удалено
  1. 2 0
      packages/app/src/interfaces/activity.ts
  2. 19 2
      packages/app/src/server/routes/apiv3/logout.js

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

@@ -8,6 +8,7 @@ const MODEL_PAGE = 'Page';
 const ACTION_UNSETTLED = 'UNSETTLED';
 const ACTION_UNSETTLED = 'UNSETTLED';
 const ACTION_LOGIN_SUCCESS = 'LOGIN_SUCCESS';
 const ACTION_LOGIN_SUCCESS = 'LOGIN_SUCCESS';
 const ACTION_LOGIN_FAILURE = 'LOGIN_FAILURE';
 const ACTION_LOGIN_FAILURE = 'LOGIN_FAILURE';
+const ACTION_LOGOUT = 'LOGOUT';
 const ACTION_PAGE_LIKE = 'PAGE_LIKE';
 const ACTION_PAGE_LIKE = 'PAGE_LIKE';
 const ACTION_PAGE_BOOKMARK = 'PAGE_BOOKMARK';
 const ACTION_PAGE_BOOKMARK = 'PAGE_BOOKMARK';
 const ACTION_PAGE_CREATE = 'PAGE_CREATE';
 const ACTION_PAGE_CREATE = 'PAGE_CREATE';
@@ -28,6 +29,7 @@ export const SUPPORTED_TARGET_MODEL_TYPE = {
 export const SUPPORTED_ACTION_TYPE = {
 export const SUPPORTED_ACTION_TYPE = {
   ACTION_LOGIN_SUCCESS,
   ACTION_LOGIN_SUCCESS,
   ACTION_LOGIN_FAILURE,
   ACTION_LOGIN_FAILURE,
+  ACTION_LOGOUT,
   ACTION_UNSETTLED,
   ACTION_UNSETTLED,
   ACTION_PAGE_LIKE,
   ACTION_PAGE_LIKE,
   ACTION_PAGE_BOOKMARK,
   ACTION_PAGE_BOOKMARK,

+ 19 - 2
packages/app/src/server/routes/apiv3/logout.js

@@ -1,5 +1,8 @@
+import { SUPPORTED_ACTION_TYPE } from '~/interfaces/activity';
+import { generateAddActivityMiddleware } from '~/server/middlewares/add-activity';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
+
 const logger = loggerFactory('growi:routes:apiv3:logout'); // eslint-disable-line no-unused-vars
 const logger = loggerFactory('growi:routes:apiv3:logout'); // eslint-disable-line no-unused-vars
 
 
 const express = require('express');
 const express = require('express');
@@ -7,9 +10,23 @@ const express = require('express');
 const router = express.Router();
 const router = express.Router();
 
 
 module.exports = (crowi) => {
 module.exports = (crowi) => {
-  router.post('/', async(req, res) => {
+  const activityService = crowi.activityService;
+  const addActivity = generateAddActivityMiddleware(crowi);
+
+  router.post('/', addActivity, async(req, res) => {
     req.session.destroy();
     req.session.destroy();
-    return res.send();
+
+    // return response first
+    res.send();
+
+    try {
+      const activityId = res.locals.activity._id;
+      const parameters = { action: SUPPORTED_ACTION_TYPE.ACTION_LOGOUT };
+      await activityService.updateByParameters(activityId, parameters);
+    }
+    catch (err) {
+      logger.error('Update activity failed', err);
+    }
   });
   });
 
 
   return router;
   return router;