26 lines
1.1 KiB
TypeScript
26 lines
1.1 KiB
TypeScript
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[];
|
|
}
|