@ -9,27 +9,38 @@ const _ = require('lodash')
module . exports = {
module . exports = {
init ( passport , conf ) {
init ( passport , conf ) {
passport . use ( 'google' ,
const strategy = new GoogleStrategy ( {
new GoogleStrategy ( {
clientID : conf . clientId ,
clientID : conf . clientId ,
clientSecret : conf . clientSecret ,
clientSecret : conf . clientSecret ,
callbackURL : conf . callbackURL ,
callbackURL : conf . callbackURL ,
passReqToCallback : true
passReqToCallback : true
} , async ( req , accessToken , refreshToken , profile , cb ) => {
} , async ( req , accessToken , refreshToken , profile , cb ) => {
try {
try {
if ( conf . hostedDomain && conf . hostedDomain != profile . _json . hd ) {
const user = await WIKI . models . users . processProfile ( {
throw new Error ( 'Google authentication should have been performed with domain ' + conf . hostedDomain )
providerKey : req . params . strategy ,
profile : {
... profile ,
picture : _ . get ( profile , 'photos[0].value' , '' )
}
} )
cb ( null , user )
} catch ( err ) {
cb ( err , null )
}
}
} )
const user = await WIKI . models . users . processProfile ( {
)
providerKey : req . params . strategy ,
profile : {
... profile ,
picture : _ . get ( profile , 'photos[0].value' , '' )
}
} )
cb ( null , user )
} catch ( err ) {
cb ( err , null )
}
} )
if ( conf . hostedDomain ) {
strategy . authorizationParams = function ( options ) {
return {
hd : conf . hostedDomain
}
}
}
passport . use ( 'google' , strategy )
} ,
} ,
logout ( conf ) {
logout ( conf ) {
return '/'
return '/'