import { Global, Module } from "@nestjs/common"; import { JwtModule, JwtService } from "@nestjs/jwt"; import { MongooseModule } from "@nestjs/mongoose"; import { LocalActorAuthGuard } from "src/auth/guards/actor-local.guard"; import { LocalUserAuthGuard } from "src/auth/guards/user-local.guard"; import { ActorAuthController } from "src/auth/auth-controllers/actor/actor.auth.controller"; import { UserAuthController } from "src/auth/auth-controllers/user/user.auth.controller"; import { ActorAuthService } from "src/auth/auth-services/actor.auth.service"; import { UserAuthService } from "src/auth/auth-services/user.auth.service"; import { UserLinkAccessService } from "src/auth/auth-services/user-link-access.service"; import { ClaimCase, ClaimCaseSchema, } from "src/claim-request-management/entites/schema/claim-cases.schema"; import { ClaimRequestManagementModel, ClaimRequestManagementSchema, } from "src/claim-request-management/entites/schema/claim-request-management.schema"; import { ClientModule } from "src/client/client.module"; import { BlameRequest, BlameRequestSchema, } from "src/request-management/entities/schema/blame-cases.schema"; import { RequestManagementModel, RequestManagementSchema, } from "src/request-management/entities/schema/request-management.schema"; import { UsersModule } from "src/users/users.module"; import { HashModule } from "src/utils/hash/hash.module"; import { SmsOrchestrationModule } from "src/sms-orchestration/sms-orchestration.module"; import { CaptchaModule } from "src/captcha/captcha.module"; /** Auth services and guards are app-wide (avoids importing AuthModule in every feature module). */ @Global() @Module({ imports: [ UsersModule, ClientModule, HashModule, CaptchaModule, SmsOrchestrationModule, MongooseModule.forFeature([ { name: RequestManagementModel.name, schema: RequestManagementSchema }, { name: BlameRequest.name, schema: BlameRequestSchema }, { name: ClaimRequestManagementModel.name, schema: ClaimRequestManagementSchema, }, { name: ClaimCase.name, schema: ClaimCaseSchema }, ]), JwtModule.register({ signOptions: { expiresIn: "1h" }, // TODO: MAKE IT ENV global: true, secret: `${process.env.JWT_SECRET}`, }), ], providers: [ UserAuthService, UserLinkAccessService, ActorAuthService, JwtService, LocalActorAuthGuard, LocalUserAuthGuard, ], exports: [ UserAuthService, ActorAuthService, JwtService, LocalActorAuthGuard, LocalUserAuthGuard, ], controllers: [UserAuthController, ActorAuthController], }) export class AuthModule {}