78 lines
3.0 KiB
TypeScript
78 lines
3.0 KiB
TypeScript
import { Module } from '@nestjs/common';
|
|
import { PassportModule } from '@nestjs/passport';
|
|
import { JwtStrategy } from '../../core/auth/strategies/jwt.strategy';
|
|
import { RefreshStrategy } from '../../core/auth/strategies/refresh.strategy';
|
|
import { JwtGuard } from '../../core/auth/guards/jwt.guard';
|
|
import { RefreshGuard } from '../../core/auth/guards/refresh.guard';
|
|
import { AuthController } from './auth.controller';
|
|
import { AuthService } from './auth.service';
|
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
import { JwtModule } from '@nestjs/jwt';
|
|
import { PrismaService } from '../../shared/prisma.service';
|
|
import { IUser } from '../identity/domain/repositories/user.interface';
|
|
import { PrismaUserRepository } from '../identity/infrastructure/repositories/prisma-user.repository';
|
|
import { SyncIdentityHandler } from '../identity/application/handlers/user/sync-identity.handler';
|
|
import { IRole } from '../identity/domain/repositories/role.interface';
|
|
import { PrismaRoleRepository } from '../identity/infrastructure/repositories/prisma-role.repository';
|
|
import { IAuthConfig } from '../identity/application/config/i-auth-config';
|
|
import { EnvAuthConfig } from '../identity/application/config/env-auth-config';
|
|
import { RedisPkceStore } from './pkce/redis-pkce.store';
|
|
import { InMemoryRefreshStore } from './refresh/inmemory-refresh.store';
|
|
import { OidcService } from './oidc.service';
|
|
import { RoleSyncService } from './role-sync.service';
|
|
import { RedisService } from '../../shared/redis.service';
|
|
import { GroupHashService } from './group-hash.service';
|
|
import { AuthenticationService } from './authentication.service';
|
|
import { EventBus } from '../../core/event-bus/event-bus.service';
|
|
import { AuditService } from '../audit/audit.service';
|
|
import { AuthorizationModule } from '../authorization/authorization.module';
|
|
|
|
|
|
@Module({
|
|
imports: [
|
|
ConfigModule,
|
|
AuthorizationModule,
|
|
PassportModule.register({ defaultStrategy: 'jwt', session: false }),
|
|
JwtModule.registerAsync({
|
|
imports: [ConfigModule],
|
|
useFactory: async (config: ConfigService) => ({
|
|
secret: config.get('RAYLAB_JWT_SECRET') || 'raylab-secret',
|
|
signOptions: { algorithm: 'HS256' },
|
|
}),
|
|
inject: [ConfigService],
|
|
}),
|
|
],
|
|
controllers: [AuthController],
|
|
providers: [
|
|
AuthService,
|
|
PrismaService,
|
|
PrismaUserRepository,
|
|
PrismaRoleRepository,
|
|
SyncIdentityHandler,
|
|
{ provide: IUser, useClass: PrismaUserRepository },
|
|
{ provide: IRole, useClass: PrismaRoleRepository },
|
|
{ provide: IAuthConfig, useClass: EnvAuthConfig },
|
|
|
|
// In-memory PKCE and Refresh stores (Redis removed)
|
|
RedisPkceStore,
|
|
InMemoryRefreshStore,
|
|
|
|
// OIDC & Role Sync
|
|
OidcService,
|
|
RoleSyncService,
|
|
GroupHashService,
|
|
AuthenticationService,
|
|
EventBus,
|
|
AuditService,
|
|
RedisService,
|
|
|
|
// Strategies & Guards
|
|
JwtStrategy,
|
|
RefreshStrategy,
|
|
JwtGuard,
|
|
RefreshGuard,
|
|
],
|
|
exports: [AuthService, OidcService, RoleSyncService, AuthenticationService, EventBus],
|
|
})
|
|
export class AuthModule {}
|