UNPKG

nestjs-google-auth

Version:

A reusable NestJS module for Google authentication using Passport.

81 lines (59 loc) 2.25 kB
# Google Login Package for NestJS A simple and reusable package for integrating Google login with NestJS using `passport-google-oauth2`. This package simplifies the process of authenticating users with Google by providing the strategy and module, leaving the control of user flow and logic up to you. ## Features - Easy-to-use package for Google login integration with NestJS - Pre-configured `passport-google-oauth2` strategy - Customizable user validation logic (you implement the controller and service) ## Installation 1. Install the package via npm: ```bash npm install nestjs-google-auth ``` 2. Install the necessary Passport dependencies if they are not already installed ```bash npm install passport passport-google-oauth2 ``` 3. Install the type definitions for Passport (for TypeScript support): ```bash npm install --save-dev @types/passport ``` 4. Install the express-session and passport if you are using sessions (if the package is not already installed): ```bash npm install passport express-session ``` 5. Add environment variables to your .env file: ```bash GOOGLE_CLIENT_ID=your-google-client-id GOOGLE_CLIENT_SECRET=your-google-client-secret GOOGLE_CALLBACK_URL=your-google-callback-url ``` ## Usage 1. Import the GoogleAuthModule & GoogleAuthController to your AppModule: ``` @Module({ imports: [ GoogleAuthModule.forRoot({ clientID: process.env.GOOGLE_CLIENT_ID, clientSecret: process.env.GOOGLE_CLIENT_SECRET, callbackURL: process.env.GOOGLE_CALLBACK_URL, scope: ['profile', 'email'], session: false, }), ], controllers: [AppController, AuthController], providers: [AppService], }) export class AppModule {} ``` 2. If you are using sessions, you should configure the session in your main.ts file using express-session: ``` app.use( session({ secret: 'your-secret-key', resave: false, saveUninitialized: true, }), ); app.use(passport.session()); ``` 3. Test your application by redirecting to the default routes "/auth/google"