slack-integration.ts 813 B

12345678910111213141516171819202122232425262728
  1. import { getSupportedGrowiActionsRegExp } from '@growi/slack';
  2. type CommandPermission = { [key:string]: string[] | boolean }
  3. export const checkPermission = (
  4. commandPermission:CommandPermission, commandOrActionIdOrCallbackId:string, fromChannel:string,
  5. ):boolean => {
  6. let isPermitted = false;
  7. Object.entries(commandPermission).forEach((entry) => {
  8. const [command, value] = entry;
  9. const permission = value;
  10. const commandRegExp = getSupportedGrowiActionsRegExp(command);
  11. if (!commandRegExp.test(commandOrActionIdOrCallbackId)) return;
  12. // permission check
  13. if (permission === true) {
  14. isPermitted = true;
  15. return;
  16. }
  17. if (Array.isArray(permission) && permission.includes(fromChannel)) {
  18. isPermitted = true;
  19. return;
  20. }
  21. });
  22. return isPermitted;
  23. };