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,32 @@
|
||||
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)
|
||||
}
|
||||
})
|
||||
Reference in new issue
Block a user