zahmis 4 лет назад
Родитель
Сommit
e9daee8792
1 измененных файлов с 31 добавлено и 0 удалено
  1. 31 0
      packages/app/src/server/util/slack-integration.ts

+ 31 - 0
packages/app/src/server/util/slack-integration.ts

@@ -0,0 +1,31 @@
+
+type commandPermission = {
+[key:string]:string[]|boolean
+}
+
+
+export const checkPermission = (
+    commandPermission:commandPermission, commandOrActionIdOrCallbackId:string, fromChannel:string,
+):boolean => {
+  let isPermitted = false;
+
+  Object.entries(commandPermission).forEach((entry) => {
+    const [command, value] = entry;
+    const permission = value;
+    const commandRegExp = new RegExp(`(^${command}$)|(^${command}:\\w+)`);
+
+    if (!commandRegExp.test(commandOrActionIdOrCallbackId)) return;
+
+    // permission check
+    if (permission === true) {
+      isPermitted = true;
+      return;
+    }
+    if (Array.isArray(permission) && permission.includes(fromChannel)) {
+      isPermitted = true;
+      return;
+    }
+  });
+
+  return isPermitted;
+};