@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
text/typescript
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";
({
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],
};
}
}