solving multi-tenancy conflicts

Give passortjs strategies local name, so we don't get name clashes...
This commit is contained in:
Paul Rodwell
2016-08-23 11:45:51 +01:00
parent 13ae1b6c4f
commit 1391704d11

View File

@ -15,11 +15,10 @@ qs = require 'qs'
url = require 'url' url = require 'url'
_ = require('lodash') _ = require 'lodash'
glob = require 'glob' glob = require 'glob'
passport = require 'passport' passport = require('passport')
# Export a function that generates security handler # Export a function that generates security handler
# when called with options object. # when called with options object.
@ -180,7 +179,9 @@ module.exports = exports = (log, loga, argv) ->
ids.push('github') ids.push('github')
GithubStrategy = require('passport-github').Strategy GithubStrategy = require('passport-github').Strategy
passport.use(new GithubStrategy({ githubStrategyName = callbackHost + 'Github'
passport.use(githubStrategyName, new GithubStrategy({
clientID: argv.github_clientID clientID: argv.github_clientID
clientSecret: argv.github_clientSecret clientSecret: argv.github_clientSecret
scope: 'user:emails' scope: 'user:emails'
@ -200,7 +201,9 @@ module.exports = exports = (log, loga, argv) ->
ids.push('twitter') ids.push('twitter')
TwitterStrategy = require('passport-twitter').Strategy TwitterStrategy = require('passport-twitter').Strategy
passport.use(new TwitterStrategy({ twitterStrategyName = callbackHost + 'Twitter'
passport.use(twitterStrategyName, new TwitterStrategy({
consumerKey: argv.twitter_consumerKey consumerKey: argv.twitter_consumerKey
consumerSecret: argv.twitter_consumerSecret consumerSecret: argv.twitter_consumerSecret
callbackURL: callbackProtocol + '//' + callbackHost + '/auth/twitter/callback' callbackURL: callbackProtocol + '//' + callbackHost + '/auth/twitter/callback'
@ -217,7 +220,9 @@ module.exports = exports = (log, loga, argv) ->
ids.push('google') ids.push('google')
GoogleStrategy = require('passport-google-oauth20').Strategy GoogleStrategy = require('passport-google-oauth20').Strategy
passport.use(new GoogleStrategy({ googleStrategyName = callbackHost + 'Google'
passport.use(googleStrategyName, new GoogleStrategy({
clientID: argv.google_clientID clientID: argv.google_clientID
clientSecret: argv.google_clientSecret clientSecret: argv.google_clientSecret
callbackURL: callbackProtocol + '//' + callbackHost + '/auth/google/callback' callbackURL: callbackProtocol + '//' + callbackHost + '/auth/google/callback'
@ -235,7 +240,9 @@ module.exports = exports = (log, loga, argv) ->
personaAudience = callbackProtocol + '//' + callbackHost personaAudience = callbackProtocol + '//' + callbackHost
console.log 'Persona Audience: ', personaAudience console.log 'Persona Audience: ', personaAudience
passport.use(new PersonaStrategy({ personaStrategyName = callbackHost + 'Persona'
passport.use(personaStrategyName, new PersonaStrategy({
audience: personaAudience audience: personaAudience
}, (email, cb) -> }, (email, cb) ->
user = { user = {
@ -250,25 +257,28 @@ module.exports = exports = (log, loga, argv) ->
app.use(passport.session()) app.use(passport.session())
# Github # Github
app.get('/auth/github', passport.authenticate('github', {scope: 'user:email'}), (req, res) -> ) if _.indexOf(ids,'github')
app.get('/auth/github/callback', app.get('/auth/github', passport.authenticate(githubStrategyName, {scope: 'user:email'}), (req, res) -> )
passport.authenticate('github', { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'})) app.get('/auth/github/callback',
passport.authenticate(githubStrategyName, { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'}))
# Twitter # Twitter
app.get('/auth/twitter', passport.authenticate('twitter'), (req, res) -> ) if _.indexOf(ids,'twitter')
app.get('/auth/twitter/callback', app.get('/auth/twitter', passport.authenticate(twitterStrategyName), (req, res) -> )
passport.authenticate('twitter', { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'})) app.get('/auth/twitter/callback',
passport.authenticate(twitterStrategyName, { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'}))
# Google # Google
app.get('/auth/google', passport.authenticate('google', { scope: [ if _.indexOf(ids,'google')
'https://www.googleapis.com/auth/plus.profile.emails.read' app.get('/auth/google', passport.authenticate(googleStrategyName, { scope: [
]})) 'https://www.googleapis.com/auth/plus.profile.emails.read'
app.get('/auth/google/callback', ]}))
passport.authenticate('google', { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'})) app.get('/auth/google/callback',
passport.authenticate(googleStrategyName, { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'}))
# Persona # Persona
app.post('/auth/browserid', app.post('/auth/browserid',
passport.authenticate('persona', { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'})) passport.authenticate(personaStrategyName, { successRedirect: '/auth/loginDone', failureRedirect: '/auth/loginDialog'}))
app.get '/auth/client-settings.json', (req, res) -> app.get '/auth/client-settings.json', (req, res) ->