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

Merge pull request #6091 from weseek/feat/98337

feat:  Create activity when  "Slack Workspace" is added
Shun Miyazawa 3 лет назад
Родитель
Сommit
e16006ad38

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

@@ -42,6 +42,7 @@ const ACTION_ADMIN_LAYOUT_UPDATE = 'ADMIN_LAYOUT_UPDATE';
 const ACTION_ADMIN_ARCHIVE_DATA_UPLOAD = 'ADMIN_ARCHIVE_DATA_UPLOAD';
 const ACTION_ADMIN_ARCHIVE_DATA_CREATE = 'ADMIN_ARCHIVE_DATA_CREATE';
 const ACTION_ADMIN_USER_NOTIFICATION_SETTINGS_ADD = 'ADMIN_USER_NOTIFICATION_SETTINGS_ADD';
+const ACTION_ADMIN_SLACK_WORKSPACE_CREATE = 'ADMIN_SLACK_WORKSPACE_CREATE';
 
 export const SupportedTargetModel = {
   MODEL_PAGE,
@@ -87,6 +88,7 @@ export const SupportedAction = {
   ACTION_ADMIN_ARCHIVE_DATA_UPLOAD,
   ACTION_ADMIN_ARCHIVE_DATA_CREATE,
   ACTION_ADMIN_USER_NOTIFICATION_SETTINGS_ADD,
+  ACTION_ADMIN_SLACK_WORKSPACE_CREATE,
 } as const;
 
 export const SupportedActionToNotified = {

+ 16 - 6
packages/app/src/server/routes/apiv3/slack-integration-settings.js

@@ -1,14 +1,11 @@
 import { SlackbotType, defaultSupportedSlackEventActions } from '@growi/slack';
 
+import { SupportedAction } from '~/interfaces/activity';
 import loggerFactory from '~/utils/logger';
 
+import { generateAddActivityMiddleware } from '../../middlewares/add-activity';
 import { apiV3FormValidator } from '../../middlewares/apiv3-form-validator';
 
-const mongoose = require('mongoose');
-const express = require('express');
-const { body, query, param } = require('express-validator');
-const axios = require('axios');
-const urljoin = require('url-join');
 
 const {
   getConnectionStatus, getConnectionStatuses,
@@ -16,6 +13,11 @@ const {
   defaultSupportedCommandsNameForBroadcastUse, defaultSupportedCommandsNameForSingleUse,
   REQUEST_TIMEOUT_FOR_GTOP,
 } = require('@growi/slack');
+const axios = require('axios');
+const express = require('express');
+const { body, query, param } = require('express-validator');
+const mongoose = require('mongoose');
+const urljoin = require('url-join');
 
 const ErrorV3 = require('../../models/vo/error-apiv3');
 
@@ -54,8 +56,12 @@ module.exports = (crowi) => {
   const loginRequiredStrictly = require('../../middlewares/login-required')(crowi);
   const adminRequired = require('../../middlewares/admin-required')(crowi);
   const csrf = require('../../middlewares/csrf')(crowi);
+  const addActivity = generateAddActivityMiddleware(crowi);
+
   const SlackAppIntegration = crowi.model('SlackAppIntegration');
 
+  const activityEvent = crowi.event('activity');
+
   const validator = {
     botType: [
       body('currentBotType').isString(),
@@ -441,7 +447,7 @@ module.exports = (crowi) => {
    *          200:
    *            description: Succeeded to create slack app integration
    */
-  router.post('/slack-app-integrations', loginRequiredStrictly, adminRequired, csrf, async(req, res) => {
+  router.post('/slack-app-integrations', loginRequiredStrictly, adminRequired, csrf, addActivity, async(req, res) => {
     const SlackAppIntegrationRecordsNum = await SlackAppIntegration.countDocuments();
     if (SlackAppIntegrationRecordsNum >= 10) {
       const msg = 'Not be able to create more than 10 slack workspace integration settings';
@@ -465,6 +471,10 @@ module.exports = (crowi) => {
         permissionsForSlackEvents: initialPermissionsForSlackEventActions,
         isPrimary: count === 0,
       });
+
+      const parameters = { action: SupportedAction.ACTION_ADMIN_SLACK_WORKSPACE_CREATE };
+      activityEvent.emit('update', res.locals.activity._id, parameters);
+
       return res.apiv3(slackAppTokens, 200);
     }
     catch (error) {