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>
33 lines
1.2 KiB
JavaScript
33 lines
1.2 KiB
JavaScript
import { test } from 'node:test'
|
|
import assert from 'node:assert/strict'
|
|
import { isStaffAccount, staffPermissions, NO_STAFF_ACCESS } from '../src/lib/staffAccess.js'
|
|
import { COLLECTIONS, BUCKET } from '../scripts/setup-legal.mjs'
|
|
|
|
test('isStaffAccount: nur Label mitarbeiter oder admin', () => {
|
|
assert.equal(isStaffAccount({ labels: ['mitarbeiter'] }), true)
|
|
assert.equal(isStaffAccount({ labels: ['admin'] }), true)
|
|
assert.equal(isStaffAccount({ labels: [] }), false)
|
|
assert.equal(isStaffAccount({}), false)
|
|
assert.equal(isStaffAccount(null), false)
|
|
})
|
|
|
|
test('staffPermissions: jede Aktion fuer beide Labels', () => {
|
|
assert.deepEqual(staffPermissions('read', 'create'), [
|
|
'read("label:mitarbeiter")',
|
|
'read("label:admin")',
|
|
'create("label:mitarbeiter")',
|
|
'create("label:admin")',
|
|
])
|
|
})
|
|
|
|
test('Hinweis nennt das Kundenportal', () => {
|
|
assert.match(NO_STAFF_ACCESS, /project\.webklar\.com/)
|
|
})
|
|
|
|
test('setup-legal: keine Rechte fuer users/any/guests mehr (ein erneuter Lauf darf nichts oeffnen)', () => {
|
|
for (const perms of [...COLLECTIONS.map((c) => c.perms), BUCKET.perms]) {
|
|
assert.ok(perms.length > 0)
|
|
for (const p of perms) assert.match(p, /\("label:(mitarbeiter|admin)"\)$/, p)
|
|
}
|
|
})
|