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:
@@ -45,9 +45,15 @@ export class ModuleAccessService {
|
||||
// — nicht ein Klient je Modellzugriff (260910-exd, Aufgabe 2). Die
|
||||
// bestehenden `where`-Filter mit tenantId bleiben ZUSAETZLICH stehen:
|
||||
// sie sind das zweite Netz, nicht redundant — dieselbe Begruendung wie
|
||||
// in `module-grants.service.ts` (die Regel auf `GroupMembership` prueft
|
||||
// nachweislich nur die Gruppenseite, T-JTS-02, und die Regel auf
|
||||
// `ModuleGrant` nur die Mandantenkennung der Zeile, T-JTS-03).
|
||||
// in `module-grants.service.ts`. Seit
|
||||
// 20260910120000_rls_widen_membership_grant_and_platform_read (260910-jab)
|
||||
// prueft die Regel auf `GroupMembership` beide Seiten der Beziehung
|
||||
// (Gruppe UND Benutzer, T-JTS-02 geschlossen) und die Regel auf
|
||||
// `ModuleGrant` zusaetzlich die referenzierte Gruppe/den referenzierten
|
||||
// Benutzer (T-JTS-03 geschlossen) — das zweite Netz bleibt trotzdem
|
||||
// bestehen: der Schalter ist weiterhin aus (#18), die Datenbankregel
|
||||
// wirkt heute nicht, und die Anwendungspruefung ist bis zum
|
||||
// Scharfschalten der einzige tatsaechliche Schutz.
|
||||
const tenantPrisma = forTenant(this.prisma, tenantId) as any;
|
||||
|
||||
if (role === 'ADMIN' || role === 'SUPER_ADMIN') {
|
||||
|
||||
Reference in New Issue
Block a user