summaryrefslogtreecommitdiff
path: root/lib/auth.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/auth.js')
-rw-r--r--lib/auth.js76
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