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('JWT_SECRET'), signOptions: { expiresIn: '30d' }, }), inject: [ConfigService], }), MailModule, LdapModule, UserModule, ], controllers: [AuthController], providers: [AuthService, LocalStrategy, JwtStrategy], exports: [AuthService], }) export class AuthModule {}