summaryrefslogtreecommitdiff
path: root/lib/auth.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/auth.js49
1 files changed, 49 insertions, 0 deletions
diff --git a/lib/auth.js b/lib/auth.js
new file mode 100644
index 00000000..e7b0dc7c
--- /dev/null
+++ b/lib/auth.js
@@ -0,0 +1,49 @@
+//auth
+//external modules
+var passport = require('passport');
+var FacebookStrategy = require('passport-facebook').Strategy;
+var TwitterStrategy = require('passport-twitter').Strategy;
+var GithubStrategy = require('passport-github').Strategy;
+var DropboxStrategy = require('passport-dropbox-oauth2').Strategy;
+
+//core
+var User = require('./user.js')
+var config = require('../config.js')
+
+function callback(accessToken, refreshToken, profile, done) {
+ //console.log(profile.displayName || profile.username);
+ User.findOrNewUser(profile.id, profile, function (err, user) {
+ if (err || user == null) {
+ console.log('auth callback failed: ' + err);
+ } else {
+ if(config.debug && user)
+ console.log('user login: ' + user._id);
+ done(null, user);
+ }
+ });
+}
+
+//facebook
+module.exports = passport.use(new FacebookStrategy({
+ clientID: config.facebook.clientID,
+ clientSecret: config.facebook.clientSecret,
+ callbackURL: config.domain + config.facebook.callbackPath
+}, callback));
+//twitter
+passport.use(new TwitterStrategy({
+ consumerKey: config.twitter.consumerKey,
+ consumerSecret: config.twitter.consumerSecret,
+ callbackURL: config.domain + config.twitter.callbackPath
+}, callback));
+//github
+passport.use(new GithubStrategy({
+ clientID: config.github.clientID,
+ clientSecret: config.github.clientSecret,
+ callbackURL: config.domain + config.github.callbackPath
+}, callback));
+//dropbox
+passport.use(new DropboxStrategy({
+ clientID: config.dropbox.clientID,
+ clientSecret: config.dropbox.clientSecret,
+ callbackURL: config.domain + config.dropbox.callbackPath
+}, callback)); \ No newline at end of file