92aa8c403b
- auth.service.ts: die drei Nach-Anmeldungs-Methoden binden je ueber genau einen Klienten tenantPrisma; adminResetPassword verweigert einem Nicht-SUPER_ADMIN das Kennwort eines SUPER_ADMIN (T-FH9-04); die drei $queryRaw-Anmeldesuchen bleiben unveraendert auf dem ungebundenen Klienten - auth.controller.ts: me/changePassword reichen user.tenantId aus dem Claim durch; adminResetPassword verzweigt ueber resolveTargetTenantId nach Rolle (ADMIN: eigener Mandant; SUPER_ADMIN: gebundener Fan-out UserService.findByIdForPlatformAdmin) — schliesst die Rechteausweitung ueber die Mandantengrenze (T-FH9-01) - auth.module.ts: importiert UserModule, zyklusfrei gemessen - auth.service.spec.ts: Identitaets-Attrappe ersetzt durch zwei unterscheidbare Klienten (__makeBoundClient); 29 Faelle, drei Falsifizierungsnachweise durchgefuehrt und zurueckgenommen Bekannt und erwartet: rls-access-inventory.spec.ts ist nach diesem Commit kurzzeitig rot (Bestandsaufnahme-Zeile auth.service.ts/user zeigt noch "gemischt", gemessen ist jetzt "gebunden") — wird in Aufgabe 3 desselben Plans geschlossen (927/928 Tests gruen, ein bekannter, in Aufgabe 3 behobener Fehlschlag, kein neuer). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AMASaSxv5QMY7RncqZriRR
44 lines
1.7 KiB
TypeScript
44 lines
1.7 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { ConfigService } from '@nestjs/config';
|
|
import { JwtModule } from '@nestjs/jwt';
|
|
import { PassportModule } from '@nestjs/passport';
|
|
import { LdapModule } from '../ldap/ldap.module';
|
|
import { MailModule } from '../mail/mail.module';
|
|
import { UserModule } from '../user/user.module';
|
|
import { AuthController } from './auth.controller';
|
|
import { AuthService } from './auth.service';
|
|
import { JwtStrategy } from './strategies/jwt.strategy';
|
|
import { LocalStrategy } from './strategies/local.strategy';
|
|
|
|
/**
|
|
* Importiert `UserModule` fuer `AuthController.resolveTargetTenantId`
|
|
* (260911-fh9): `adminResetPassword` loest den Mandanten der obersten
|
|
* Rolle (SUPER_ADMIN) ueber `UserService.findByIdForPlatformAdmin` auf.
|
|
* Zyklusfrei gemessen: `UserModule` importiert nur `GroupsModule`,
|
|
* `GroupsModule` importiert nichts (`grep -n "imports:"
|
|
* apps/api/src/groups/groups.module.ts`: null Treffer), und kein Modul
|
|
* ausser `AppModule` importiert `AuthModule` (`grep -rn "AuthModule"
|
|
* apps/api/src --include=*.module.ts`: nur `app.module.ts` und diese
|
|
* Datei selbst). `LdapModule`, das `AuthModule` bereits importiert,
|
|
* importiert `UserModule` unabhaengig davon selbst.
|
|
*/
|
|
@Module({
|
|
imports: [
|
|
PassportModule,
|
|
JwtModule.registerAsync({
|
|
useFactory: (configService: ConfigService) => ({
|
|
secret: configService.get<string>('JWT_SECRET'),
|
|
signOptions: { expiresIn: '30d' },
|
|
}),
|
|
inject: [ConfigService],
|
|
}),
|
|
MailModule,
|
|
LdapModule,
|
|
UserModule,
|
|
],
|
|
controllers: [AuthController],
|
|
providers: [AuthService, LocalStrategy, JwtStrategy],
|
|
exports: [AuthService],
|
|
})
|
|
export class AuthModule {}
|