export type PermissionSection = "club" | "settings" | "user"; export type PermissionModule = | "member" | "calendar" | "newsletter" | "protocoll" | "qualification" | "award" | "executive_position" | "communication" | "membership_status" | "calendar_type" | "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 | "*"; } & { all?: Array | "*" }; } & { admin?: boolean; }; export type SectionsAndModulesObject = { [section in PermissionSection]: Array; }; export const permissionSections: Array = ["club", "settings", "user"]; export const permissionModules: Array = [ "member", "calendar", "newsletter", "protocoll", "qualification", "award", "executive_position", "communication", "membership_status", "calendar_type", "user", "role", ]; export const permissionTypes: Array = ["read", "create", "update", "delete"]; export const sectionsAndModules: SectionsAndModulesObject = { club: ["member", "calendar", "newsletter", "protocoll"], settings: ["qualification", "award", "executive_position", "communication", "membership_status", "calendar_type"], user: ["user", "role"], };