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,25 @@
|
||||
import { Permission } from '../auth/permissions.enum';
|
||||
|
||||
/** Paperless-Tag, der ein Dokument als „im Posteingang“ kennzeichnet. */
|
||||
export const POSTEINGANG_TAG_ID = 1;
|
||||
|
||||
/**
|
||||
* Darf der Benutzer dieses Paperless-Dokument über die Posteingangs-Maske
|
||||
* bearbeiten? Der Backend-Service-Token umgeht die Paperless-Rechte, deshalb
|
||||
* wird hier pro Dokument geprüft: Posteingang-Rolle nur für Dokumente mit
|
||||
* Posteingang-Tag, Buchhaltung nur für Dokumente mit Manuell-Tag.
|
||||
*/
|
||||
export function darfDokumentBearbeiten(
|
||||
tags: number[] | undefined,
|
||||
permissions: Permission[],
|
||||
manuellTagId: number,
|
||||
): boolean {
|
||||
if (permissions.includes(Permission.MANAGE_ALL)) return true;
|
||||
const vorhanden = new Set((tags ?? []).map(Number));
|
||||
return (
|
||||
(vorhanden.has(POSTEINGANG_TAG_ID) &&
|
||||
permissions.includes(Permission.VIEW_INBOX)) ||
|
||||
(vorhanden.has(manuellTagId) &&
|
||||
permissions.includes(Permission.PROCESS_MANUALLY))
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user