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:
bjoernpoettkerandClaude Opus 5.5 committed 2026-11-04 10:46:43 +01:00
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);
});
});