import { IAMResource, ManagementResource } from "./AppResources"; import { Policy, PolicyType } from "./AppPolicies"; function appPolicies(...userPolicies: PolicyType[] | PolicyType[][]) { const policies = userPolicies.length === 1 && Array.isArray(userPolicies[0]) ? userPolicies[0] : (userPolicies as PolicyType[]); const requiredPolicies = Policy.parseResourcePolicies(policies); return requiredPolicies; } export default class AppGuard { static IAMRoot = appPolicies(`${IAMResource.Root}.root`); static IAMAuthenticated = appPolicies(Object.values(IAMResource).map((iam) => `${iam}.root`) as PolicyType[]); static ManageProjects = appPolicies(`${ManagementResource.ManageProject}.*`); static CreateProjects = appPolicies(`${ManagementResource.ManageProject}.create`); }