Login nur fuer Mitarbeiter (Label), Kunden-Konten werden abgewiesen

Kunden haben Konten im selben Appwrite-Projekt und konnten sich mit ihrem
Portal-Passwort im Ticketsystem anmelden; dabei entstand sogar automatisch ein
employees-Eintrag.

- lib/staffAccess.js: Zugang nur mit Label "mitarbeiter" oder "admin"
- AuthContext: Konto ohne Label -> Sitzung sofort beenden, Hinweis aufs
  Kundenportal (Login, Neuladen, nach dem 2FA-Code); employees-Eintrag nur
  noch fuer Mitarbeiter
- setup-legal.mjs: Rechte nur fuer die Labels (ein erneuter Lauf oeffnet
  nichts mehr fuer "users")

Die eigentliche Sperre sind die Appwrite-Rechte (Kundenportal
scripts/mitarbeiter-zugang.mjs --rechte).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-10-03 10:54:16 +00:00
1 parent 65e9931f2c
commit 78bc99a73b
5 files changed
+87 -6

No files matched your search

+21
View File
@@ -0,0 +1,21 @@
/**
* Zugang zum Ticketsystem nur fuer Mitarbeiter: Appwrite-Label "mitarbeiter" oder "admin". Kunden haben Konten
* im selben Appwrite-Projekt (Kundenportal) und konnten sich mit ihrem Portal-Passwort hier anmelden. Labels
* setzt nur der Server-Key; dieselben Labels tragen die Rechte der Collections und Buckets
* (Kundenportal scripts/mitarbeiter-zugang.mjs) und der Team-Eingang des Portals.
* Bewusst ohne Import von appwrite.js, damit Node dieses Modul in den Tests laden kann.
*/
export const STAFF_LABELS = ['mitarbeiter', 'admin']
export const NO_STAFF_ACCESS =
'Dieses Konto hat keinen Zugang zum Ticketsystem. Kunden melden sich unter project.webklar.com an.'
export function isStaffAccount(account) {
const labels = Array.isArray(account?.labels) ? account.labels : []
return STAFF_LABELS.some((label) => labels.includes(label))
}
/** Appwrite-Rechte nur fuer Mitarbeiter, z. B. staffPermissions('read', 'create') */
export function staffPermissions(...actions) {
return actions.flatMap((action) => STAFF_LABELS.map((label) => `${action}("label:${label}")`))
}