feat(quick-260909-ipc): ldap-config.service.ts an forTenant() binden, Loesch-Fremdzugriff schliessen
Aufgabe 2 der Etappe 2: getConfig/createConfig/updateConfig sowie addFieldMapping/removeFieldMapping laufen jetzt ueber forTenant(), gebunden an den aus der Anfrage bekannten Mandanten. removeFieldMapping nimmt den Mandanten neu als Pflichtparameter entgegen und der Controller holt ihn aus dem Sitzungsnachweis statt nur die URL-Kennung weiterzureichen (T-IPC-01) -- ein Administrator konnte bisher die Feldzuordnung eines fremden Mandanten loeschen, wenn er ihre Kennung kannte. getAllActiveConfigs() und die Start-Nachverschluesselung bleiben bewusst uebergreifend, mit ausgeschriebener Begruendung im Code (Befund B). rls-access-inventory.spec.ts erkennt jetzt neben `this.prisma.<Modell>` auch gebundene `<Name>.<Modell>`-Zugriffe (Befund F/G) und prueft eine neue Stand-Spalte (gebunden/ungebunden/gemischt) im Klassifikationsdokument gegen den Quelltext. Das macht zwei bisher unsichtbare, weil schon laenger gebundene Fundstellen sichtbar (auth.service.ts/passwordResetToken, ldap.service.ts/groupMembership) und deckt auf, dass (ldap-config.service.ts, ldapConfig) tatsaechlich "beides" ist, nicht "muss-mandantengebunden" (Befund B). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AMASaSxv5QMY7RncqZriRR
This commit is contained in:
@@ -337,17 +337,31 @@ export class LdapController {
|
||||
throw new NotFoundException('No LDAP config found for this tenant');
|
||||
}
|
||||
|
||||
return this.ldapConfigService.addFieldMapping(config.id, dto);
|
||||
return this.ldapConfigService.addFieldMapping(tenantId, config.id, dto);
|
||||
}
|
||||
|
||||
/**
|
||||
* DELETE /ldap/config/mappings/:id - Remove non-default field mapping.
|
||||
*
|
||||
* Der Mandant kommt aus dem Sitzungsnachweis, NICHT aus der URL (T-IPC-01,
|
||||
* WINDOWS #20 Etappe 2, 260909-ipc): vorher nahm diese Route
|
||||
* ausschliesslich die Kennung entgegen und reichte sie ungebunden an den
|
||||
* Dienst weiter — ein Administrator des Mandanten A konnte damit die
|
||||
* Feldzuordnung des Mandanten B loeschen, wenn er deren Kennung kannte.
|
||||
*/
|
||||
@Delete('config/mappings/:id')
|
||||
@Roles(Role.ADMIN, Role.SUPER_ADMIN)
|
||||
async removeFieldMapping(@Param('id') id: string) {
|
||||
async removeFieldMapping(@Req() req: any, @Param('id') id: string) {
|
||||
const tenantId = req.tenantId;
|
||||
if (!tenantId) {
|
||||
throw new BadRequestException('No tenant context');
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await this.ldapConfigService.removeFieldMapping(id);
|
||||
const result = await this.ldapConfigService.removeFieldMapping(
|
||||
tenantId,
|
||||
id,
|
||||
);
|
||||
if (!result) {
|
||||
throw new NotFoundException('Field mapping not found');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user