/* jshint node: true */ var passport = require('passport'), _ = require('lodash'), config = require('../../config.json'), User = require('./schemas/User'); var entities = new Entities(); var auth = { login: function (method) { return passport.authenticate(method); }, logout: function (req, res) { req.logout(); res.redirect('/'); }, serializeUser: function (user, done) { done(null, user.twitter_id); }, deserializeUser: function (id, done) { User.findOne({ twitter_id: id }, "_id displayName username photo", function (err, user) { done(err, user); }); }, insertUser: function (accessToken, refreshToken, profile, done) { process.nextTick(function () { var userData = { username: profile.username, displayName: profile.displayName, photo: profile.photos[0].value }; User.update({twitter_id: profile.id}, userData, {upsert: true}, function (userData, profile, err) { return done(err, _.merge(userData, {twitter_id: profile.id})); }.bind(this, userData, profile)); }); }, loggedIn: function () { return passport.authenticate('twitter', { successReturnToOrRedirect: '/', failureRedirect: '/login' }); }, } module.exports = auth