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:
1 parent
65e9931f2c
commit
78bc99a73b
5 files changed
+87
-6
No files matched your search
@@ -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}")`))
|
||||
}
|
||||
Reference in new issue
Block a user