56 lines
1.7 KiB
TypeScript
56 lines
1.7 KiB
TypeScript
export type PermissionSection = "club" | "settings" | "user";
|
|
|
|
export type PermissionModule =
|
|
| "members"
|
|
| "calendar"
|
|
| "newsletter"
|
|
| "protocoll"
|
|
| "qualification"
|
|
| "award"
|
|
| "executive_position"
|
|
| "communication"
|
|
| "membership_status"
|
|
| "user"
|
|
| "role";
|
|
|
|
export type PermissionType = "read" | "create" | "update" | "delete";
|
|
|
|
export type PermissionString =
|
|
| `${PermissionSection}.${PermissionModule}.${PermissionType}` // für spezifische Berechtigungen
|
|
| `${PermissionSection}.${PermissionModule}.*` // für alle Berechtigungen in einem Modul
|
|
| `${PermissionSection}.${PermissionType}` // für spezifische Berechtigungen in einem Abschnitt
|
|
| `${PermissionSection}.*` // für alle Berechtigungen in einem Abschnitt
|
|
| "*"; // für Admin
|
|
|
|
export type PermissionObject = {
|
|
[section in PermissionSection]?: {
|
|
[module in PermissionModule]?: Array<PermissionType> | "*";
|
|
} & { all?: Array<PermissionType> | "*" };
|
|
} & {
|
|
admin?: boolean;
|
|
};
|
|
|
|
export type SectionsAndModulesObject = {
|
|
[section in PermissionSection]: Array<PermissionModule>;
|
|
};
|
|
|
|
export const permissionSections: Array<PermissionSection> = ["club", "settings", "user"];
|
|
export const permissionModules: Array<PermissionModule> = [
|
|
"members",
|
|
"calendar",
|
|
"newsletter",
|
|
"protocoll",
|
|
"qualification",
|
|
"award",
|
|
"executive_position",
|
|
"communication",
|
|
"membership_status",
|
|
"user",
|
|
"role",
|
|
];
|
|
export const permissionTypes: Array<PermissionType> = ["read", "create", "update", "delete"];
|
|
export const sectionsAndModules: SectionsAndModulesObject = {
|
|
club: ["members", "calendar", "newsletter", "protocoll"],
|
|
settings: ["qualification", "award", "executive_position", "communication", "membership_status"],
|
|
user: ["user", "role"],
|
|
};
|