import { Module, forwardRef } from '@nestjs/common'; import { AuthService } from './services/auth.service'; import { AuthController } from './controllers/auth.controller'; import { UtilsModule } from '../utils/utils.module'; import { UserModule } from '../users/user.module'; import { JwtModule } from '@nestjs/jwt'; import { ConfigService } from '@nestjs/config'; import { AdminModule } from '../admin/admin.module'; import { TokensService } from './services/tokens.service'; import { RestaurantsModule } from '../restaurants/restaurants.module'; import { MikroOrmModule } from '@mikro-orm/nestjs'; import { User } from '../users/entities/user.entity'; import { AdminAuthController } from './controllers/admin-auth.controller'; import { AdminAuthGuard } from './guards/adminAuth.guard'; @Module({ imports: [ UtilsModule, UserModule, JwtModule.registerAsync({ useFactory: (configService: ConfigService) => ({ global: true, secret: configService.getOrThrow('JWT_SECRET'), signOptions: { expiresIn: configService.getOrThrow('JWT_EXPIRATION_TIME'), }, }), inject: [ConfigService], }), AdminModule, forwardRef(() => RestaurantsModule), MikroOrmModule.forFeature([User]), ], controllers: [AuthController, AdminAuthController], providers: [AuthService, TokensService, AdminAuthGuard], exports: [AdminAuthGuard], }) export class AuthModule {}