1+ module . exports = function ( app ) {
2+ var passport = require ( 'passport' )
3+ var GitHubStrategy = require ( 'passport-github' ) . Strategy ;
4+ var session = require ( 'express-session' ) ;
5+ var options = require ( '../appConfig' ) ;
6+
7+ // var User = require('../models/users');
8+
9+ app . use ( session ( { secret :'tswift' , resave : true , saveUninitialized : true } ) )
10+
11+ //Initialize passport and restore authentication state if available
12+ app . use ( passport . initialize ( ) ) ;
13+ app . use ( passport . session ( ) ) ;
14+
15+ passport . use ( new GitHubStrategy ( {
16+ clientID : options . GITHUB_CLIENT_ID || process . env . CLIENT_ID ,
17+ clientSecret : options . GITHUB_CLIENT_SECRET || process . env . CLIENT_SECRET ,
18+ callbackURL : '/auth/github/callback' ,
19+ } ,
20+ function ( accessToken , refreshToken , user , cb ) {
21+ console . log ( "using GITHUB strategy" )
22+ return cb ( null , user ) ;
23+ }
24+ ) ) ;
25+
26+ // Check this re saving to a session, serialize and deserialize
27+ // https://stackoverflow.com/questions/27637609/understanding-passport-serialize-deserialize#27637668
28+ passport . serializeUser ( function ( user , done ) {
29+ console . log ( "user" , user ) ;
30+ done ( null , user . id ) ;
31+ // done(null, user);
32+ } ) ;
33+
34+ passport . deserializeUser ( function ( id , done ) {
35+ done ( null , user ) ;
36+ } ) ;
37+
38+ //OAuth authentication route
39+ app . get ( '/auth/github' , passport . authenticate ( 'github' ) ) ;
40+ app . get ( '/auth/github/callback' ,
41+ passport . authenticate ( 'github' , { failureRedirect : '/' } ) ,
42+ function ( req , res ) {
43+ res . redirect ( '/profile' ) ;
44+ } ) ;
45+ }
0 commit comments