UNPKG

we-core

Version:

We.js is a node.js framework for build real time applications, sites or blogs!

48 lines (43 loc) 1.77 kB
var passport = require('passport'); module.exports = { configureAndSetStrategies: function configureAndSetStrategies(we) { // disable if we.config.passport is null if (!we.config.passport || !we.config.passport.strategies) return; // save strategy names for auth login we.auth.strategyNames = Object.keys(we.config.passport.strategies); we.auth.strategyNames.forEach(function forEachStrategyName(name) { var strategy = we.config.passport.strategies[name]; // i18n title for use in icons and links strategy.i18nTitle = 'passport.strategy.'+name; if (!strategy.Strategy) throw new Error('we.config.passport.strategies.'+name+'.Strategy is required'); if (!strategy.findUser) throw new Error('we.config.passport.strategies.'+name+'.findUser function is required'); try { passport.use(new strategy.Strategy(strategy, strategy.findUser.bind({ we: we }))); } catch(e) { we.log.error('auth:configureAndSetStrategies:', e); } }); // initialize and set session we.express.use(passport.initialize()); // session suport if (we.config.passport.enableSession) { // - serializer, serialize user to save in session passport.serializeUser(function onSerializeAuthUser(user, done) { done(null, user.id); }); // deserializer, get data from db with session get from id passport.deserializeUser(function onDeserializeAuthUser(id, done) { we.db.models.user.findOne({ where: { id: id } }).then(function afterLoadAuthUserInPassport(user) { done(null, user); }); }); we.express.use(passport.session()); } // save passport in we.passport we.passport = passport; } }