{"version":3,"sources":["../../../src/lib/use-permissions.ts"],"sourcesContent":["import { skipToken, useQuery } from \"@tanstack/react-query\";\nimport { getClaims } from \"../api/utils.js\";\nimport { IncorrectPermissionsError, NoAuthTokenError } from \"./errors.js\";\nimport { useApi } from \"../api/api-provider.js\";\n\n// TODO find a way to reuse the same type in the @workos-inc/node package\ntype WidgetScope =\n  | \"widgets:users-table:manage\"\n  | \"widgets:sso:manage\"\n  | \"widgets:domain-verification:manage\"\n  | \"widgets:dsync:manage\"\n  | \"widgets:api-keys:manage\"\n  | \"widgets:audit-log-streaming:manage\";\n\nexport function usePermissions(scope: WidgetScope) {\n  const { authToken } = useApi();\n\n  return useQuery({\n    queryKey: [\"permission\", scope, authToken],\n    queryFn: authToken\n      ? async () => {\n          const { permissions } = getClaims(authToken);\n\n          // When the permissions is not present in the token\n          if (!permissions || !Array.isArray(permissions)) {\n            throw new NoAuthTokenError();\n          }\n\n          // When the scope is not present in the permissions\n          if (!permissions.includes(scope)) {\n            throw new IncorrectPermissionsError();\n          }\n\n          return true;\n        }\n      : skipToken,\n  });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,yBAAoC;AACpC,mBAA0B;AAC1B,oBAA4D;AAC5D,0BAAuB;AAWhB,SAAS,eAAe,OAAoB;AACjD,QAAM,EAAE,UAAU,QAAI,4BAAO;AAE7B,aAAO,6BAAS;AAAA,IACd,UAAU,CAAC,cAAc,OAAO,SAAS;AAAA,IACzC,SAAS,YACL,YAAY;AACV,YAAM,EAAE,YAAY,QAAI,wBAAU,SAAS;AAG3C,UAAI,CAAC,eAAe,CAAC,MAAM,QAAQ,WAAW,GAAG;AAC/C,cAAM,IAAI,+BAAiB;AAAA,MAC7B;AAGA,UAAI,CAAC,YAAY,SAAS,KAAK,GAAG;AAChC,cAAM,IAAI,wCAA0B;AAAA,MACtC;AAEA,aAAO;AAAA,IACT,IACA;AAAA,EACN,CAAC;AACH;","names":[]}