UNPKG

nestjs-google-auth

Version:

A reusable NestJS module for Google authentication using Passport.

58 lines (53 loc) 1.55 kB
import { DynamicModule, Module, Provider } from "@nestjs/common"; import { PassportModule } from "@nestjs/passport"; import { GoogleStrategy } from "./google.strategy"; @Module({}) export class GoogleAuthModule { static forRoot(options: { clientID: string; clientSecret: string; callbackURL: string; scope: string[]; session?: boolean; }): DynamicModule { const googleStrategyProvider: Provider = { provide: GoogleStrategy, useFactory: () => { return new GoogleStrategy(options); }, }; return { module: GoogleAuthModule, providers: [GoogleStrategy, googleStrategyProvider], imports: [ PassportModule.register({ defaultStrategy: "google", session: options.session ?? false, }), ], exports: [GoogleStrategy], }; } static forRootAsync(options: { useFactory: (...args: any[]) => Promise<any> | any; inject?: any[]; session?: boolean; }): DynamicModule { const googleStrategyProvider: Provider = { provide: GoogleStrategy, useFactory: (options) => new GoogleStrategy(options), inject: options.inject || [], }; return { module: GoogleAuthModule, providers: [GoogleStrategy, googleStrategyProvider], imports: [ PassportModule.register({ defaultStrategy: "google", session: options.session ?? false, }), ], exports: [GoogleStrategy], }; } }