feat(sprint-5): Phase 6 — Staff management UI (list, invite, permissions, revoke)

- /settings/staff: staff account table with role badges + permission chips
- Invite sheet: email + role template + 8 granular permission checkboxes
- Edit permissions dialog with optimistic update
- Revoke access with AlertDialog confirmation
- React Query hooks wired (useStaffListQuery, mutations)
- Full i18n (de/en), mock fallback, loading skeletons
- Sidebar nav updated: Personal → /settings/staff with UserCog icon
- Added @radix-ui/react-checkbox + Checkbox UI component
This commit is contained in:
Patrick Plate
2026-06-12 20:32:54 +02:00
parent ed1efccc90
commit 2cc8c89944
9 changed files with 941 additions and 3 deletions
+39
View File
@@ -293,6 +293,45 @@
"footerText": "Cannabis-Anbauverein — Sichere Mitgliederverwaltung",
"adminLogin": "Zum Admin-Login"
},
"staff": {
"title": "Personal",
"invite": "Neues Mitglied einladen",
"name": "Name",
"email": "E-Mail",
"role": "Rolle",
"permissions": "Berechtigungen",
"status": "Status",
"actions": "Aktionen",
"active": "Aktiv",
"revoked": "Widerrufen",
"invited": "Eingeladen",
"editPermissions": "Berechtigungen bearbeiten",
"revokeAccess": "Zugang widerrufen",
"revokeConfirm": "Zugang für {name} wirklich widerrufen? Der Mitarbeiter kann sich nicht mehr anmelden.",
"revokeSuccess": "Zugang widerrufen.",
"inviteTitle": "Mitarbeiter einladen",
"inviteDesc": "Neues Teammitglied per E-Mail einladen und Berechtigungen zuweisen.",
"inviteEmail": "E-Mail-Adresse",
"inviteRole": "Rollenvorlage",
"roleAusgabe": "Ausgabe",
"roleLager": "Lager",
"roleVorstand": "Vorstand",
"roleCustom": "Benutzerdefiniert",
"inviteSend": "Einladung senden",
"inviteSuccess": "Einladung an {email} gesendet.",
"permRecordDistribution": "Ausgabe erfassen",
"permViewMemberList": "Mitgliederliste einsehen",
"permViewMemberQuota": "Kontingent einsehen",
"permAddMember": "Mitglieder anlegen",
"permViewStock": "Lager einsehen",
"permRecordStockIn": "Wareneingang",
"permViewComplianceReport": "Berichte einsehen",
"permManageGrowCalendar": "Anbaukalender verwalten",
"savePermissions": "Speichern",
"permissionsSaved": "Berechtigungen aktualisiert.",
"cancel": "Abbrechen",
"noStaff": "Noch keine Mitarbeiter vorhanden."
},
"api": {
"loading": "Wird geladen...",
"error": "Fehler beim Laden der Daten.",
+39
View File
@@ -293,6 +293,45 @@
"footerText": "Cannabis cultivation club — Secure member management",
"adminLogin": "Go to Admin Login"
},
"staff": {
"title": "Staff",
"invite": "Invite New Member",
"name": "Name",
"email": "Email",
"role": "Role",
"permissions": "Permissions",
"status": "Status",
"actions": "Actions",
"active": "Active",
"revoked": "Revoked",
"invited": "Invited",
"editPermissions": "Edit Permissions",
"revokeAccess": "Revoke Access",
"revokeConfirm": "Really revoke access for {name}? The staff member will no longer be able to sign in.",
"revokeSuccess": "Access revoked.",
"inviteTitle": "Invite Staff Member",
"inviteDesc": "Invite a new team member via email and assign permissions.",
"inviteEmail": "Email address",
"inviteRole": "Role template",
"roleAusgabe": "Distribution",
"roleLager": "Stock",
"roleVorstand": "Board",
"roleCustom": "Custom",
"inviteSend": "Send Invitation",
"inviteSuccess": "Invitation sent to {email}.",
"permRecordDistribution": "Record Distribution",
"permViewMemberList": "View Member List",
"permViewMemberQuota": "View Quota",
"permAddMember": "Add Members",
"permViewStock": "View Stock",
"permRecordStockIn": "Record Stock In",
"permViewComplianceReport": "View Reports",
"permManageGrowCalendar": "Manage Grow Calendar",
"savePermissions": "Save",
"permissionsSaved": "Permissions updated.",
"cancel": "Cancel",
"noStaff": "No staff members yet."
},
"api": {
"loading": "Loading...",
"error": "Failed to load data.",