Gutschriften/Kuendigung: DRAFT-endDate-Schutz + Belege staff-only
Pentest R138 Hygiene + neue Vorgaben: 1) endDate wird bei DRAFT-Vertraegen NICHT mehr gesetzt (Entwurf = nur Vorlage). Nur Status wurde vorher geschont, endDate zog trotzdem mit. 2) Ueberweisungsbelege (credit-note-receipts) sind jetzt reine Mitarbeiter/Admin-Downloads: neuer FileOwner-kind 'contract-staff' blockt Portal-Kunden im fileDownload-Controller. Das generierte Gutschrift-PDF (credit-notes) bleibt vertragsbasiert -> der besitzende Kunde darf seine eigene Gutschrift laden. Bereits vorher abgesichert (bestaetigt): Kunden koennen keine Gutschriften anlegen (blockPortal) und keine Belege hochladen (Portal-403 im Upload). Verifiziert: DRAFT haelt endDate; Beleg-Owner=contract-staff, PDF-Owner=contract. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -48,6 +48,13 @@ export async function downloadFile(req: AuthRequest, res: Response): Promise<voi
|
||||
if (!(await canAccessCustomer(req, res, owner.customerId))) return;
|
||||
} else if (owner.kind === 'contract') {
|
||||
if (!(await canAccessContract(req, res, owner.contractId))) return;
|
||||
} else if (owner.kind === 'contract-staff') {
|
||||
// Nur Mitarbeiter/Admin – Portal-Kunden nie (z.B. Gutschrift-
|
||||
// Überweisungsbelege). Staff dürfen wie bei allen Vertrags-Files.
|
||||
if (req.user?.isCustomerPortal) {
|
||||
res.status(403).json({ success: false, error: 'Keine Berechtigung' });
|
||||
return;
|
||||
}
|
||||
} else if (owner.kind === 'admin') {
|
||||
// PDF-Vorlagen: nur Mitarbeiter mit settings:read
|
||||
const perms = req.user?.permissions || [];
|
||||
|
||||
Reference in New Issue
Block a user