export type PermissionSection = "club" | "unit" | "configuration" | "management"; export type PermissionModule = // club | "member" | "calendar" | "newsletter" | "protocol" | "query" | "listprint" // unit | "equipment" | "equipment_type" | "vehicle" | "vehicle_type" | "wearable" | "wearable_type" | "inspection" | "inspection_plan" | "respiratory_gear" | "respiratory_wearer" | "respiratory_mission" | "damage_report" | "maintenance" // configuration | "qualification" | "award" | "executive_position" | "communication_type" | "membership_status" | "newsletter_config" | "salutation" | "education" | "calendar_type" | "query_store" | "template" | "template_usage" | "backup" // management | "user" | "role" | "webapi" | "setting"; 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 | `additional.${string}.${string}` // additional | "*"; // für Admin export type PermissionObject = { [section in PermissionSection]?: { [module in PermissionModule]?: Array | "*"; } & { all?: Array | "*" }; } & { admin?: boolean; adminByOwner?: boolean; } & { additional?: { [key: string]: string }; }; export type SectionsAndModulesObject = { [section in PermissionSection]: Array; } & { additional?: Array<{ key: string; name: string; type: "number" | "string"; emptyIfAdmin: boolean; }>; }; export const permissionSections: Array = ["club", "unit", "configuration", "management"]; export const permissionModules: Array = [ // club "member", "calendar", "newsletter", "protocol", "query", "listprint", // unit "equipment", "equipment_type", "vehicle", "vehicle_type", "wearable", "wearable_type", "inspection", "inspection_plan", "respiratory_gear", "respiratory_wearer", "respiratory_mission", "damage_report", "maintenance", // configuration "qualification", "award", "executive_position", "communication_type", "membership_status", "newsletter_config", "salutation", "education", "calendar_type", "query_store", "template", "template_usage", "backup", // management "user", "role", "webapi", "setting", ]; export const permissionTypes: Array = ["read", "create", "update", "delete"]; export const sectionsAndModules: SectionsAndModulesObject = { club: ["member", "calendar", "newsletter", "protocol", "query", "listprint"], unit: [ "equipment", "equipment_type", "vehicle", "vehicle_type", "wearable", "wearable_type", "inspection", "inspection_plan", "respiratory_gear", "respiratory_wearer", "respiratory_mission", "damage_report", "maintenance", ], configuration: [ "qualification", "award", "executive_position", "communication_type", "membership_status", "salutation", "education", "calendar_type", "query_store", "template", "template_usage", "newsletter_config", ], management: ["user", "role", "webapi", "backup", "setting"], additional: [ //{ key: "val", name: "name", type: "number", emptyIfAdmin: true }, ], };