diff options
Diffstat (limited to '')
-rw-r--r-- | lib/auth.js | 76 |
1 files changed, 46 insertions, 30 deletions
diff --git a/lib/auth.js b/lib/auth.js index dc8b94ca..af3e8d1d 100644 --- a/lib/auth.js +++ b/lib/auth.js @@ -7,44 +7,60 @@ var GithubStrategy = require('passport-github').Strategy; var DropboxStrategy = require('passport-dropbox-oauth2').Strategy; //core -var User = require('./user.js'); -var config = require('../config.js'); +var config = require('./config.js'); var logger = require("./logger.js"); +var models = require("./models"); function callback(accessToken, refreshToken, profile, done) { //logger.info(profile.displayName || profile.username); - User.findOrNewUser(profile.id, profile, function (err, user) { - if (err || user == null) { - logger.error('auth callback failed: ' + err); - } else { - if (config.debug && user) - logger.info('user login: ' + user._id); - done(null, user); + models.User.findOrCreate({ + where: { + profileid: profile.id.toString() + }, + defaults: { + profile: JSON.stringify(profile) } - }); + }).spread(function(user, created) { + if (user) { + if (config.debug) + logger.info('user login: ' + user.id); + return done(null, user); + } + }).catch(function(err) { + logger.error('auth callback failed: ' + err); + return done(err, null); + }) } //facebook -module.exports = passport.use(new FacebookStrategy({ - clientID: config.facebook.clientID, - clientSecret: config.facebook.clientSecret, - callbackURL: config.getserverurl() + config.facebook.callbackPath -}, callback)); +if (config.facebook) { + module.exports = passport.use(new FacebookStrategy({ + clientID: config.facebook.clientID, + clientSecret: config.facebook.clientSecret, + callbackURL: config.serverurl + '/auth/facebook/callback' + }, callback)); +} //twitter -passport.use(new TwitterStrategy({ - consumerKey: config.twitter.consumerKey, - consumerSecret: config.twitter.consumerSecret, - callbackURL: config.getserverurl() + config.twitter.callbackPath -}, callback)); +if (config.twitter) { + passport.use(new TwitterStrategy({ + consumerKey: config.twitter.consumerKey, + consumerSecret: config.twitter.consumerSecret, + callbackURL: config.serverurl + '/auth/twitter/callback' + }, callback)); +} //github -passport.use(new GithubStrategy({ - clientID: config.github.clientID, - clientSecret: config.github.clientSecret, - callbackURL: config.getserverurl() + config.github.callbackPath -}, callback)); +if (config.github) { + passport.use(new GithubStrategy({ + clientID: config.github.clientID, + clientSecret: config.github.clientSecret, + callbackURL: config.serverurl + '/auth/github/callback' + }, callback)); +} //dropbox -passport.use(new DropboxStrategy({ - clientID: config.dropbox.clientID, - clientSecret: config.dropbox.clientSecret, - callbackURL: config.getserverurl() + config.dropbox.callbackPath -}, callback));
\ No newline at end of file +if (config.dropbox) { + passport.use(new DropboxStrategy({ + clientID: config.dropbox.clientID, + clientSecret: config.dropbox.clientSecret, + callbackURL: config.serverurl + '/auth/dropbox/callback' + }, callback)); +}
\ No newline at end of file |