ff-admin-server/src/type/permissionTypes.ts

87 lines
2.2 KiB
TypeScript
Raw Normal View History

export type PermissionSection = "club" | "settings" | "user";
2024-08-27 11:47:27 +02:00
export type PermissionModule =
2024-09-16 12:37:06 +02:00
| "member"
2024-08-27 11:47:27 +02:00
| "calendar"
| "newsletter"
2024-12-25 12:22:28 +01:00
| "newsletter_config"
2024-10-03 13:31:05 +02:00
| "protocol"
2024-08-27 11:47:27 +02:00
| "qualification"
| "award"
| "executive_position"
2024-12-12 16:33:51 +01:00
| "communication_type"
2024-09-04 14:24:30 +02:00
| "membership_status"
2025-01-25 11:58:10 +01:00
| "salutation"
2024-10-27 15:48:01 +01:00
| "calendar_type"
2024-08-27 11:47:27 +02:00
| "user"
2024-12-12 16:33:51 +01:00
| "role"
2025-01-22 09:27:15 +01:00
| "webapi"
2024-12-12 16:33:51 +01:00
| "query"
2024-12-22 10:29:42 +01:00
| "query_store"
2024-12-23 14:00:50 +01:00
| "template"
2025-02-02 16:23:44 +01:00
| "template_usage"
| "backup";
2024-08-27 17:54:59 +02:00
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;
};
2024-08-27 11:47:27 +02:00
export type SectionsAndModulesObject = {
[section in PermissionSection]: Array<PermissionModule>;
};
export const permissionSections: Array<PermissionSection> = ["club", "settings", "user"];
2024-08-27 11:47:27 +02:00
export const permissionModules: Array<PermissionModule> = [
2024-09-16 12:37:06 +02:00
"member",
2024-08-27 11:47:27 +02:00
"calendar",
"newsletter",
2024-12-25 12:22:28 +01:00
"newsletter_config",
2024-10-03 13:31:05 +02:00
"protocol",
2024-08-27 11:47:27 +02:00
"qualification",
"award",
"executive_position",
2024-12-12 16:33:51 +01:00
"communication_type",
2024-09-04 14:24:30 +02:00
"membership_status",
2025-01-25 11:58:10 +01:00
"salutation",
2024-10-27 15:48:01 +01:00
"calendar_type",
2024-08-27 11:47:27 +02:00
"user",
"role",
2025-01-22 09:27:15 +01:00
"webapi",
2024-12-12 16:33:51 +01:00
"query",
"query_store",
2024-12-22 10:29:42 +01:00
"template",
2024-12-23 14:00:50 +01:00
"template_usage",
2025-02-02 16:23:44 +01:00
"backup",
2024-08-27 11:47:27 +02:00
];
export const permissionTypes: Array<PermissionType> = ["read", "create", "update", "delete"];
2024-08-27 11:47:27 +02:00
export const sectionsAndModules: SectionsAndModulesObject = {
2024-12-12 16:33:51 +01:00
club: ["member", "calendar", "newsletter", "protocol", "query"],
settings: [
"qualification",
"award",
"executive_position",
"communication_type",
"membership_status",
2025-01-25 11:58:10 +01:00
"salutation",
2024-12-12 16:33:51 +01:00
"calendar_type",
"query_store",
2024-12-22 10:29:42 +01:00
"template",
2024-12-23 14:00:50 +01:00
"template_usage",
2024-12-25 12:22:28 +01:00
"newsletter_config",
2024-12-12 16:33:51 +01:00
],
2025-02-02 16:23:44 +01:00
user: ["user", "role", "webapi", "backup"],
2024-08-27 11:47:27 +02:00
};