export type PermissionSection = "club" | "unit" | "configuration" | "management"; export type PermissionModule = // club | "member" | "calendar" | "newsletter" | "protocol" | "query" | "listprint" // unit | "equipment" | "equipment_type" | "vehicle" | "respiratory_gear" | "respiratory_wearer" | "respiratory_mission" | "damage_report" // configuration | "qualification" | "award" | "executive_position" | "communication_type" | "membership_status" | "newsletter_config" | "salutation" | "calendar_type" | "query_store" | "template" | "template_usage" | "backup" // management | "user" | "role" | "webapi"; 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", "unit", "configuration", "management"]; export const permissionModules: Array = [ // club "member", "calendar", "newsletter", "protocol", "query", "listprint", // unit "equipment", "equipment_type", "vehicle", "respiratory_gear", "respiratory_wearer", "respiratory_mission", "damage_report", // configuration "qualification", "award", "executive_position", "communication_type", "membership_status", "newsletter_config", "salutation", "calendar_type", "query_store", "template", "template_usage", "backup", // management "user", "role", "webapi", ]; export const permissionTypes: Array = ["read", "create", "update", "delete"]; export const sectionsAndModules: SectionsAndModulesObject = { club: ["member", "calendar", "newsletter", "protocol", "query", "listprint"], unit: [ "equipment", "equipment_type", "vehicle", "respiratory_gear", "respiratory_wearer", "respiratory_mission", "damage_report", ], configuration: [ "qualification", "award", "executive_position", "communication_type", "membership_status", "salutation", "calendar_type", "query_store", "template", "template_usage", "newsletter_config", ], management: ["user", "role", "webapi", "backup"], };