node.js - Does compoundjs-passport always expects user to be saved to the database after authentication? -
i developing simple user crud module using compoundjs, compound-passport , passport-facebook. used default approach generate crud , works fine if want save database want save session here , save user @ later stage problem not request or session in model.
here user.js model
module.exports = function (compound, user) { // define user here user.findorcreate = function (data, done) { console.log(data.profile.emails[0].value); /* facebook openid */ if (data.profile.provider == "facebook") { user.all({ where: { email_id: data.profile.emails[0].value }, limit: 1 }, function (err, user) { if(data.profile.gender != '' && data.profile.gender != undefined) var givengender = (data.profile.gender == 'male')?'m':'f' else var givengender = ''; if (user[0]) return done(err, user[0]); var userdet = { firstname: data.profile.name.givenname, lastname: data.profile.name.familyname, email_id: data.profile.emails[0].value, gender:givengender, dob: new date(data.profile._json.birthday), registered_from:"facebook", created_at:new date(), updated_at:new date() }; req.session.userdet = userdet;//this not work done(); //req.session.userdet = userdet; // user.create({ // displayname: data.profile.displayname, // email: data.profile.emails[0].value, // facebookid: data.openid, // provider:"facebook", // createdate:new date(), // lastlogin:new date() // }, done); }); } else /* not known yet */ { console.log("dont how handle user.") console.log(data.profile); } }; }; the req.session.userdet = userdet; above not work don't have request object in model.
here facebook.js implements facebook strategy
var passport = require('passport'); exports.callback = function(token, tokensecret, profile, done) { exports.user.findorcreate({ facebookid: profile.id, profile: profile }, function (err, user) { return done(err, user); }); }; exports.init = function (conf, app) { var strategy = require('passport-facebook').strategy; passport.use(new strategy({ clientid: conf.facebook.apikey, clientsecret: conf.facebook.secret, callbackurl: conf.baseurl + 'users/signupnew' }, exports.callback)); passport.serializeuser(function(user, done) { console.log("i here"); console.log(user); done(null, user); }); passport.deserializeuser(function(id, done) { exports.user.findbyid(id, function(err, user) { done(err, user); }); }); // app.get('/auth/facebook', // passport.authenticate('facebook', { scope: [ 'email,user_likes,user_birthday' ] })); // app.get('/auth/facebook/callback', // passport.authenticate('facebook', { // failureredirect: conf.failureredirect || '/' // }), exports.redirectonsuccess); app.get('/users/signupnew',passport.authenticate('facebook', { failureredirect: conf.failureredirect || '/' }),function(req,res){ req.session.redirect = '/users/signup'; exports.redirectonsuccess(req,res); }); }; basically want implement multi step sign have collect data in session , register user. apologise if understanding flow faulty new user node , compound.
Comments
Post a Comment