nestjs-google-auth
Version:
A reusable NestJS module for Google authentication using Passport.
58 lines (53 loc) • 1.55 kB
text/typescript
import { DynamicModule, Module, Provider } from "@nestjs/common";
import { PassportModule } from "@nestjs/passport";
import { GoogleStrategy } from "./google.strategy";
({})
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],
};
}
}