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

Merge pull request #6050 from weseek/feat/97656-create-activity-when-password-is-updated

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

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

@@ -12,6 +12,7 @@ const ACTION_REGISTRATION_SUCCESS = 'REGISTRATION_SUCCESS';
 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_LOGOUT = 'LOGOUT';
+const ACTION_PASSWORD_UPDATE = 'PASSWORD_UPDATE';
 const ACTION_PAGE_VIEW = 'PAGE_VIEW';
 const ACTION_PAGE_VIEW = 'PAGE_VIEW';
 const ACTION_PAGE_LIKE = 'PAGE_LIKE';
 const ACTION_PAGE_LIKE = 'PAGE_LIKE';
 const ACTION_PAGE_UNLIKE = 'PAGE_UNLIKE';
 const ACTION_PAGE_UNLIKE = 'PAGE_UNLIKE';
@@ -43,6 +44,7 @@ export const SUPPORTED_ACTION_TYPE = {
   ACTION_LOGIN_SUCCESS,
   ACTION_LOGIN_SUCCESS,
   ACTION_LOGIN_FAILURE,
   ACTION_LOGIN_FAILURE,
   ACTION_LOGOUT,
   ACTION_LOGOUT,
+  ACTION_PASSWORD_UPDATE,
   ACTION_PAGE_VIEW,
   ACTION_PAGE_VIEW,
   ACTION_PAGE_LIKE,
   ACTION_PAGE_LIKE,
   ACTION_PAGE_UNLIKE,
   ACTION_PAGE_UNLIKE,

+ 9 - 2
packages/app/src/server/routes/apiv3/personal-setting.js

@@ -1,13 +1,15 @@
 import { body } from 'express-validator';
 import { body } from 'express-validator';
 
 
+import { SUPPORTED_ACTION_TYPE } from '~/interfaces/activity';
 import { listLocaleIds } from '~/utils/locale-utils';
 import { listLocaleIds } from '~/utils/locale-utils';
 import loggerFactory from '~/utils/logger';
 import loggerFactory from '~/utils/logger';
 
 
-
+import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
 import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
 import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
 import EditorSettings from '../../models/editor-settings';
 import EditorSettings from '../../models/editor-settings';
 import InAppNotificationSettings from '../../models/in-app-notification-settings';
 import InAppNotificationSettings from '../../models/in-app-notification-settings';
 
 
+
 const logger = loggerFactory('growi:routes:apiv3:personal-setting');
 const logger = loggerFactory('growi:routes:apiv3:personal-setting');
 
 
 const express = require('express');
 const express = require('express');
@@ -69,9 +71,12 @@ module.exports = (crowi) => {
   const accessTokenParser = require('../../middlewares/access-token-parser')(crowi);
   const accessTokenParser = require('../../middlewares/access-token-parser')(crowi);
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const csrf = require('../../middlewares/csrf')(crowi);
   const csrf = require('../../middlewares/csrf')(crowi);
+  const addActivity = generateAddActivityMiddleware(crowi);
 
 
   const { User, ExternalAccount } = crowi.models;
   const { User, ExternalAccount } = crowi.models;
 
 
+  const activityEvent = crowi.event('activity');
+
   const minPasswordLength = crowi.configManager.getConfig('crowi', 'app:minPasswordLength');
   const minPasswordLength = crowi.configManager.getConfig('crowi', 'app:minPasswordLength');
 
 
   const validator = {
   const validator = {
@@ -340,7 +345,7 @@ module.exports = (crowi) => {
    *                      type: object
    *                      type: object
    *                      description: user data updated
    *                      description: user data updated
    */
    */
-  router.put('/password', accessTokenParser, loginRequiredStrictly, csrf, validator.password, apiV3FormValidator, async(req, res) => {
+  router.put('/password', accessTokenParser, loginRequiredStrictly, csrf, addActivity, validator.password, apiV3FormValidator, async(req, res) => {
     const { body, user } = req;
     const { body, user } = req;
     const { oldPassword, newPassword } = body;
     const { oldPassword, newPassword } = body;
 
 
@@ -349,6 +354,8 @@ module.exports = (crowi) => {
     }
     }
     try {
     try {
       const userData = await user.updatePassword(newPassword);
       const userData = await user.updatePassword(newPassword);
+      const parameters = { action: SUPPORTED_ACTION_TYPE.ACTION_PASSWORD_UPDATE };
+      activityEvent.emit('update', res.locals.activity._id, parameters);
       return res.apiv3({ userData });
       return res.apiv3({ userData });
     }
     }
     catch (err) {
     catch (err) {