fix(security): Posteingangs-Maske nur für Dokumente im eigenen Arbeitsbereich
PUT paperless/inbox/:id prüft jetzt pro Dokument: Posteingang-Rolle nur für Dokumente mit Tag 1 (Posteingang), Buchhaltung nur für Dokumente mit MANUELL_BEARBEITEN_TAG, Admins immer. Bisher ließen sich Mandant (Owner), Felder und Titel beliebiger Paperless-Dokumente ändern, weil das Backend mit dem Service-Token arbeitet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3f98dfd98f
commit
cedd7c78f4
4 files changed
+97
-4
No files matched your search
@@ -0,0 +1,45 @@
|
||||
import { Permission } from '../auth/permissions.enum';
|
||||
import {
|
||||
POSTEINGANG_TAG_ID,
|
||||
darfDokumentBearbeiten,
|
||||
} from './dokument-zugriff.util';
|
||||
|
||||
const MANUELL = 6;
|
||||
|
||||
describe('darfDokumentBearbeiten', () => {
|
||||
it('Posteingang-Rolle: nur Dokumente mit Posteingang-Tag', () => {
|
||||
const rechte = [Permission.VIEW_INBOX];
|
||||
expect(
|
||||
darfDokumentBearbeiten([POSTEINGANG_TAG_ID, 9], rechte, MANUELL),
|
||||
).toBe(true);
|
||||
expect(darfDokumentBearbeiten([9], rechte, MANUELL)).toBe(false);
|
||||
expect(darfDokumentBearbeiten([MANUELL], rechte, MANUELL)).toBe(false);
|
||||
});
|
||||
|
||||
it('Buchhaltung: Dokumente mit Manuell-Tag', () => {
|
||||
const rechte = [Permission.PROCESS_MANUALLY];
|
||||
expect(darfDokumentBearbeiten([MANUELL], rechte, MANUELL)).toBe(true);
|
||||
expect(darfDokumentBearbeiten([POSTEINGANG_TAG_ID], rechte, MANUELL)).toBe(
|
||||
false,
|
||||
);
|
||||
});
|
||||
|
||||
it('Admins dürfen alles', () => {
|
||||
expect(darfDokumentBearbeiten([], [Permission.MANAGE_ALL], MANUELL)).toBe(
|
||||
true,
|
||||
);
|
||||
});
|
||||
|
||||
it('andere Rollen und fehlende Tags: nein', () => {
|
||||
expect(
|
||||
darfDokumentBearbeiten(
|
||||
[POSTEINGANG_TAG_ID],
|
||||
[Permission.VIEW_FREIGABE],
|
||||
MANUELL,
|
||||
),
|
||||
).toBe(false);
|
||||
expect(
|
||||
darfDokumentBearbeiten(undefined, [Permission.VIEW_INBOX], MANUELL),
|
||||
).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user