Kunden haben Konten im selben Appwrite-Projekt wie das Ticketsystem. Bisher galt als Mitarbeiter, wer einen employees-Eintrag hatte - den legte das Ticketsystem beim Login jedes Kontos automatisch an, und jedes angemeldete Konto konnte ihn auch selbst anlegen. Damit kam ein Kunde ueber /api/team an Chats, Kundenansicht, Angebote und Finanzen. - staffLabels.js: Mitarbeiter = Label "mitarbeiter" oder "admin" (setzt nur der Server-Key) - Team-Eingang (requireStaffJwt) und Portal-Login-Sperre nur noch per Label; kein Abgleich ueber employees-Eintrag oder Mail mehr - Portal-Login: Konto-Abruf gestoert -> 503 fuer alle (fail closed) - Mitarbeiter anlegen/bearbeiten setzt das Label "mitarbeiter" - scripts/mitarbeiter-zugang.mjs: --status (markiert employees-Eintraege von Kunden), --label, --eintrag-loeschen (nur Eintrag, nie das Konto), --rechte (Probelauf, --anwenden mit Sicherung, --zurueck): any/guests/users -> label:mitarbeiter + label:admin in Collections, Buckets und bei Dokument-/ Datei-Sicherheit auch einzelnen Dokumenten und Dateien Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
23 lines
845 B
JavaScript
23 lines
845 B
JavaScript
/**
|
|
* Wer ist Mitarbeiter? Nur das Appwrite-Label "mitarbeiter" (oder "admin") am Konto. Labels setzt allein der
|
|
* Server-Key - anders als ein employees-Eintrag, den jedes angemeldete Konto (auch ein Kunde) selbst anlegen
|
|
* konnte. Dieselben Labels stehen in den Appwrite-Rechten der Ticketsystem-Collections
|
|
* (scripts/mitarbeiter-zugang.mjs) und im Login des Ticketsystems.
|
|
*/
|
|
export const STAFF_LABEL = 'mitarbeiter'
|
|
export const ADMIN_LABEL = 'admin'
|
|
export const STAFF_LABELS = [STAFF_LABEL, ADMIN_LABEL]
|
|
|
|
function labelsOf(account) {
|
|
return Array.isArray(account?.labels) ? account.labels : []
|
|
}
|
|
|
|
export function isStaffAccount(account) {
|
|
const labels = labelsOf(account)
|
|
return STAFF_LABELS.some((label) => labels.includes(label))
|
|
}
|
|
|
|
export function isAdminAccount(account) {
|
|
return labelsOf(account).includes(ADMIN_LABEL)
|
|
}
|