UNPKG

@next-nest-auth/nestauth

Version:

NestAuth is an authentication solution for NestJS applications, designed to handle user login, session management, and token-based authentication (JWT). It integrates seamlessly with Next.js and other frontends to provide a unified authentication system,

76 lines (70 loc) 2.77 kB
import { Module, DynamicModule, Provider, forwardRef } from "@nestjs/common"; import { ConfigModule } from "@nestjs/config"; import { NestAuthService } from "./nestauth.service"; import { NestAuthController } from "./nestauth.controller"; import { NestAuthModuleOptions } from "./nestauth.interface"; import { PassportModule } from "@nestjs/passport"; import { JwtModule } from "@nestjs/jwt"; import { NestAuthJwtStrategy } from "./nestauth-jwt.strategy"; import { NestAuthLocalStrategy } from "./nestauth-local.strategy"; import { NestAuthGoogleStrategy } from "./nestauth-google.strategy"; import { NestAuthFacebookStrategy } from "./nestauth-facebook.strategy"; import { APP_FILTER } from "@nestjs/core"; import { HttpExceptionFilter } from "./http-exception.filter"; import { ClientsModule } from "@nestjs/microservices"; @Module({ imports: [PassportModule, ConfigModule.forRoot({})], }) export class NestAuthModule { static register(options: NestAuthModuleOptions): DynamicModule { const UserServiceProvider: Provider = { provide: "UserService", useExisting: options.UserService, }; const JwtSecretProvider: Provider = { provide: "JWT_SECRET", useValue: options.jwtSecret || "60s", }; const JwtExpiresInProvider: Provider = { provide: "JWT_EXPIRES_IN", useValue: options.jwtExpiresIn, }; const JwtRefreshTokenExpiresInProvider: Provider = { provide: "JWT_REFRESH_TOKEN_EXPIRES_IN", useValue: options.jwtRefreshTokenExpiresIn, }; return { module: NestAuthModule, imports: [ JwtModule.registerAsync({ imports: [], inject: [], useFactory: async () => ({ secret: options.jwtSecret, signOptions: { expiresIn: options.jwtExpiresIn, }, }), }), forwardRef(() => options.UserModule), ], providers: [ NestAuthService, UserServiceProvider, NestAuthJwtStrategy, NestAuthLocalStrategy, NestAuthGoogleStrategy, NestAuthFacebookStrategy, JwtSecretProvider, JwtExpiresInProvider, JwtRefreshTokenExpiresInProvider, // { // provide: APP_FILTER, // useClass: HttpExceptionFilter, // }, ], exports: [NestAuthService], controllers: [NestAuthController], }; } }