import { Module } from '@nestjs/common'; import { JwtModule } from '@nestjs/jwt'; import { PassportModule } from '@nestjs/passport'; import { ConfigModule, ConfigService } from '@nestjs/config'; import { AuthController } from './auth.controller'; import { UserPermissionController } from './user-permission.controller'; import { AuthService } from './auth.service'; import { PermissionService } from './services/permission.service'; import { JwtStrategy } from './strategies/jwt.strategy'; import { LocalStrategy } from './strategies/local.strategy'; import { JwtAuthGuard } from './guards/jwt-auth.guard'; import { LocalAuthGuard } from './guards/local-auth.guard'; import { RolesGuard } from './guards/roles.guard'; import { GlobalAuthGuard } from './guards/global-auth.guard'; import { MemberModule } from '../member/member.module'; import { AdminModule } from '../admin/admin.module'; import { RbacModule } from '../rbac/rbac.module'; @Module({ imports: [ PassportModule.register({ defaultStrategy: 'jwt' }), JwtModule.registerAsync({ imports: [ConfigModule], useFactory: async (configService: ConfigService) => ({ secret: configService.get('JWT_SECRET', 'wwjcloud-secret-key'), signOptions: { expiresIn: configService.get('JWT_EXPIRES_IN', '1h'), }, }), inject: [ConfigService], }), MemberModule, AdminModule, RbacModule, ], controllers: [AuthController, UserPermissionController], providers: [ AuthService, PermissionService, JwtStrategy, LocalStrategy, JwtAuthGuard, LocalAuthGuard, RolesGuard, GlobalAuthGuard, ], exports: [ AuthService, PermissionService, JwtAuthGuard, LocalAuthGuard, RolesGuard, GlobalAuthGuard, JwtModule, PassportModule, ], }) export class AuthModule {}