feat(quick-260910-jab): listForUser binden, die vier Aufzeichnungen im Quelltext richtigstellen
- TenderRssFeedSourceService.listForUser() nimmt jetzt (userId, tenantId) entgegen und laeuft ueber einen gebundenen Klienten (forTenant) — die neue Leseregel schliesst plattformweite Zeilen ein, die Reparatur haette den ungebundenen Pfad sonst still auf nur die plattformweiten Zeilen reduziert (Befund F). createPlatform/remove bleiben bewusst ungebunden, Kommentare an der neuen Regel richtiggestellt. - TendersController.listRssFeeds reicht die Mandantenkennung aus dem Aufrufzusammenhang durch. - Vier Aufzeichnungen im Quelltext (module-access.service.ts, groups.service.ts, module-grants.service.ts, rls-coverage.spec.ts) sagen jetzt, dass die Datenbankregel seit 20260910120000_rls_widen_membership_ grant_and_platform_read beide Seiten prueft; die Anwendungspruefungen bleiben unveraendert bestehen (zweites Netz, wirkt vor dem Scharfschalten als einziger Schutz). - Zwei-Klienten-Nachweis in module-grants.service.spec.ts ergaenzt (Kommentar, warum die beiden Cross-Tenant-Tests nach der Regelaenderung nicht entfallen duerfen) und in tender-rss-feed.service.spec.ts umgekehrt (listForUser bindet jetzt). - Rule 1: implizites any beim Destrukturieren in listRssFeeds (feeds ist seit der Bindung `any`) mit expliziter Annotation behoben. - Falsifizierungsnachweis durchgefuehrt: Bindungsaufruf zurueckgenommen, genau ein Test wurde rot (AssertionError, 0 statt der erwarteten Aufrufe), Ruecknahme rueckgaengig gemacht. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AMASaSxv5QMY7RncqZriRR
This commit is contained in:
@@ -91,13 +91,18 @@ export class ModuleGrantsService {
|
||||
}
|
||||
|
||||
// Die Mandanten-Gegenpruefung bleibt ausdruecklich erhalten (T-JTS-03,
|
||||
// 260909-jts, Aufgabe 1): die ausgelieferte Regel auf ModuleGrant
|
||||
// prueft ausschliesslich die Mandantenkennung der Zeile selbst
|
||||
// ("tenantId" = current_tenant_id()), NICHT die referenzierte Gruppe.
|
||||
// Eine Zeile mit korrekter eigener Mandantenkennung, die auf die
|
||||
// Gruppe eines fremden Mandanten zeigt, verletzt diese Regel
|
||||
// nachweislich nicht (gemessen gegen die echte Migration in Aufgabe 1).
|
||||
// Diese Anwendungspruefung ist damit der einzige Schutz gegen diese
|
||||
// 260909-jts/260910-jab): bis Migration
|
||||
// 20260910120000_rls_widen_membership_grant_and_platform_read pruefte
|
||||
// die Regel auf ModuleGrant ausschliesslich die Mandantenkennung der
|
||||
// Zeile selbst ("tenantId" = current_tenant_id()),
|
||||
// NICHT die referenzierte Gruppe oder den referenzierten Benutzer — eine
|
||||
// Zeile mit korrekter eigener Mandantenkennung, die auf die Gruppe/den
|
||||
// Benutzer eines fremden Mandanten zeigt, verletzte diese Regel
|
||||
// nachweislich nicht (gemessen in Aufgabe 1 von 260909-jts). Die
|
||||
// Datenbank zieht diese Grenze inzwischen ebenfalls (260910-jab, Aufgabe
|
||||
// 1) — diese zweite Ziehung wirkt aber erst NACH dem Scharfschalten
|
||||
// (#18, der Schalter ist weiterhin aus). Diese Anwendungspruefung bleibt
|
||||
// deshalb bis dahin der EINZIGE und danach der ERSTE Schutz gegen diese
|
||||
// Form der Rechteausweitung und darf nicht als "macht jetzt die
|
||||
// Datenbank" entfallen.
|
||||
await this.assertTargetBelongsToTenant(tenantId, groupId, userId);
|
||||
|
||||
Reference in New Issue
Block a user