cairo/lib/vix/AppPolicies.ts

27 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-08-24 12:41:04 -06:00
import { ResourcePolicy, ResourcePolicyComputeType, ResourcePolicyString, ResourcePolicyType } from "@dunemask/vix/util";
import { IAMResource, ManagementResource, Resource } from "./AppResources";
export const Policy = ResourcePolicy<Resource>;
export declare type Policy = ResourcePolicy<Resource>;
export declare type PolicyType = ResourcePolicyType<Resource>;
export declare type PolicyComputeType = ResourcePolicyComputeType<Resource>;
export declare type PolicyString = ResourcePolicyString<Resource>;
export declare type PolicyDefault = { id: string; name: string; policies: Policy[] };
export default class DefaultRolePolicies {
static Root = $unsafeGetRootPolicy();
static Admin = Policy.multiple<Resource>(
`${IAMResource.Admin}.root`,
`${ManagementResource.ManageProject}.root`,
`${ManagementResource.ManageUser}.root`,
);
static User = Policy.multiple<Resource>(`${IAMResource.User}.root`);
}
function $unsafeGetRootPolicy(): Policy[] {
const policies: PolicyString[] = [];
for (const resource of Object.values(Resource)) policies.push(`${resource}.root`);
return Policy.multiple<Resource>(...policies) as Policy[];
}