slack-integration.ts 757 B

12345678910111213141516171819202122232425262728293031
  1. type commandPermission = {
  2. [key:string]:string[]|boolean
  3. }
  4. export const checkPermission = (
  5. commandPermission:commandPermission, commandOrActionIdOrCallbackId:string, fromChannel:string,
  6. ):boolean => {
  7. let isPermitted = false;
  8. Object.entries(commandPermission).forEach((entry) => {
  9. const [command, value] = entry;
  10. const permission = value;
  11. const commandRegExp = new RegExp(`(^${command}$)|(^${command}:\\w+)`);
  12. if (!commandRegExp.test(commandOrActionIdOrCallbackId)) return;
  13. // permission check
  14. if (permission === true) {
  15. isPermitted = true;
  16. return;
  17. }
  18. if (Array.isArray(permission) && permission.includes(fromChannel)) {
  19. isPermitted = true;
  20. return;
  21. }
  22. });
  23. return isPermitted;
  24. };