zahmis 4 лет назад
Родитель
Сommit
d9cc43ea9b

+ 3 - 6
packages/slackbot-proxy/src/controllers/slack.ts

@@ -221,9 +221,9 @@ export class SlackCtrl {
       return;
     }
 
-    const payload = JSON.parse(body.payload);
-    const callbackId = payload?.view?.callback_id;
-    const actionId = payload?.actions?.[0].action_id;
+    const payload:any = JSON.parse(body.payload);
+    const callbackId:string = payload?.view?.callback_id;
+    const actionId:string = payload?.actions?.[0].action_id;
     let privateMeta:any;
 
     if (payload.view != null) {
@@ -281,14 +281,11 @@ export class SlackCtrl {
 
 
     await Promise.all(relations.map(async(relation) => {
-
       await this.relationsService.checkPermissionForInteractions(relation, channelName, callbackId, actionId, body, relations);
 
       /*
        * forward to GROWI server
        */
-
-
       if (relation == null) {
         logger.error('*No relation found.*');
         return;

+ 14 - 2
packages/slackbot-proxy/src/services/RelationsService.ts

@@ -127,12 +127,20 @@ export class RelationsService {
       return false;
     }
 
-    const permission = relation.supportedCommandsForBroadcastUse[growiCommandType];
+    // case: singleUse
+    let permission = relation.supportedCommandsForSingleUse[growiCommandType];
+
+    // case: broadCastUse
+    if (permission == null) {
+      permission = relation.supportedCommandsForBroadcastUse[growiCommandType];
+    }
 
+    // both case: null
     if (permission == null) {
       return false;
     }
 
+    // check permission at channel level
     if (Array.isArray(permission)) {
       return permission.includes(channelName);
     }
@@ -172,22 +180,26 @@ export class RelationsService {
       this.isPermittedForInteractions = false;
       return;
     }
+
     const singleUse = Object.keys(relation.supportedCommandsForSingleUse);
     const broadCastUse = Object.keys(relation.supportedCommandsForBroadcastUse);
 
     [...singleUse, ...broadCastUse].forEach(async(commandName) => {
+
+      // case: singleUse
       this.permissionForInteractions = relation.supportedCommandsForSingleUse[commandName];
 
+      // case: broadcastUse
       if (this.permissionForInteractions == null) {
         this.permissionForInteractions = relation.supportedCommandsForBroadcastUse[commandName];
       }
 
-      // permission check
       if (this.permissionForInteractions === true) {
         this.isPermittedForInteractions = true;
         return;
       }
 
+      // check permission at channel level
       if (Array.isArray(this.permissionForInteractions)) {
         this.isPermittedForInteractions = this.permissionForInteractions.includes(channelName);
         return;