passport-hapi-oauth

A Simple wrapper to work as a connector between [passport js OAuth strategies](http://www.passportjs.org/) and the [hapi request api](https://hapijs.com/api).

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
passport-hapi-oauth
1.5.65 years ago5 years agoMinified + gzip package size for passport-hapi-oauth in KB

Readme

Passport Hapi OAuth
NPM
A simple wrapper to work as a connector between passport js OAuth strategies and the hapi request api.
It is configured to work with following OAuth providers: Google, Outlook and Facebook.
>Make sure your app has enough permissions for OAuth login (e.g. Any application that calls Google APIs needs to enable APIs in the API Console).

Install

$ npm install passport-hapi-oauth --save

Usage

Instantiation
import HapiPassport from 'passport-hapi-oauth';

// simple
const googleOAuth = new HapiPassport('GoogleStrategy', {
	clientID: 'YOUR_CLIENT_ID',
	clientSecret: 'YOUR_CLIENT_SECRET',
	callbackURL: 'YOUR_CALLBACK_URL'
});

// advanced
const googleOAuth = new HapiPassport('GoogleStrategy', {
	clientID: 'YOUR_CLIENT_ID',
	clientSecret: 'YOUR_CLIENT_SECRET',
	callbackURL: 'YOUR_CALLBACK_URL'
}, {scope: ['email', 'profile', 'openid']});
| arguments | values | |:-----------------:|:---------------------------------------------------------------------------------------------:| | strategy(required)| GoogleStrategy, OutlookStrategy or FacebookStrategy | | config (required)| { clientID: 'YOURAPPID', clientSecret: 'YOURAPPSECRET', callbackURL: 'YOURCALLBACKURL'} | | scope
(optional) | { scope: 'SCOPE1' , 'SCOPE2' , ...
} |
\Read OAuth provider permissions to understand what scopes can be used.
Route Hanlders
1st route to sign in:
server.route({
    method: 'GET',
    path: '/auth/google',
    handler: (request, reply) => {
        googleOAuth.authenticate(request, (url) => {
            // set reply and then redirect
            reply({
                status: 'success'
            }).redirect(url);
        });
    }
});
2nd route to handle callbacks:
server.route({
    method: 'GET',
    path: '/auth/google/login/callback',
    handler: (request, reply) => {
        googleOAuth.authenticateCallBack(request, (err, userData) => {
            if (err) {
                // handle error
            } else {
                // AuthProvider login successful
                // parse userData and authenticate user								
            }
        });
    }
});