kpiplus
Version:
KPI+
1 lines • 2.71 kB
JavaScript
var User=require("../models/user"),Token=require("../models/tokens"),log=require("../models/log"),facebookconfig=require("../configs").facebook,facebookStrategy=require("passport-facebook").Strategy,underscore=require("underscore");module.exports=function(e,o){o.serializeUser(function(e,o){o(null,e.id)}),o.deserializeUser(function(e,o){User.findById(e,function(e,a){o(e,a)})}),o.use(new facebookStrategy({clientID:facebookconfig.clientID,clientSecret:facebookconfig.clientSecret,callbackURL:facebookconfig.callbackURL,enableProof:!1,profileURL:"https://graph.facebook.com/me?fields=location,first_name,last_name,middle_name,name,link,work,education,gender,timezone,locale,verified,picture,about,address,age_range,bio,birthday,cover,currency,devices,email,favorite_athletes,id,hometown,favorite_teams,inspirational_people,install_type,installed,interested_in,languages,meeting_for,name_format,political,quotes,relationship_status,religion,significant_other,sports,updated_time,website"},function(e,o,a,t){process.nextTick(function(){User.findOne({email:a.emails[0].value},function(i,n){if(i)return t(i);n?(n.facebook.token=e,n.facebook.refreshToken=o,n.facebook.name=a.displayName,n.facebook.picture="https://graph.facebook.com/"+a.id+"/picture?type=large",n.token=e,n.name=a.displayName,n.refreshToken=o,n.join_date||(n.join_date=new Date),n.server="facebook",n.local||(n.picture=n.facebook.picture,n.local={email:n.email,name:n.name,picture:n.picture}),n.picture||(n.picture=n.facebook.picture),n.save(function(o,a){if(o)return t(o);new Token({email:a.email,token:e}).save(function(e){return e?t(e):t(null,a)})})):((n=new User).current_user=a.emails[0].value,n.facebook.id=a.id,n.facebook.token=e,n.facebook.email=a.emails[0].value,n.facebook.name=a.displayName,n.facebook.refreshToken=o,n.facebook.picture="https://graph.facebook.com/"+a.id+"/picture?type=large",n.token=e,n.email=a.emails[0].value,n.name=a.displayName,n.refreshToken=o,n.picture="https://graph.facebook.com/"+a.id+"/picture?type=large",n.server="facebook",n.local={email:n.email,name:n.name,picture:n.picture},n.join_date||(n.join_date=new Date),n.save(function(o,a){if(o)return t(o);new Token({email:a.email,token:e}).save(function(e){return e?t(e):t(null,a)})}))})})})),e.get("/auth/facebook",o.authenticate("facebook",{scope:facebookconfig.scope})),e.get("/auth/facebook/callback",o.authenticate("facebook",{failureRedirect:"/auth/facebook"}),function(e,o){log.create({id_app:"LOGIN",id_func:"LOGIN",action:"FACBOOKLOGIN"},e.user.email,e.header("user-agent"),e),o.writeHead(200,{"Content-Type":"text/html"}),o.end("<html><head><title>"+e.user.facebook.token+"</title></head><body>access_token = "+e.user.facebook.token+"</body></html>")})};