summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/auth.js28
-rw-r--r--lib/config.js2
-rw-r--r--lib/models/user.js5
-rw-r--r--lib/response.js2
4 files changed, 32 insertions, 5 deletions
diff --git a/lib/auth.js b/lib/auth.js
index af3e8d1d..ec45eea3 100644
--- a/lib/auth.js
+++ b/lib/auth.js
@@ -4,6 +4,7 @@ var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var TwitterStrategy = require('passport-twitter').Strategy;
var GithubStrategy = require('passport-github').Strategy;
+var GitlabStrategy = require('passport-gitlab2').Strategy;
var DropboxStrategy = require('passport-dropbox-oauth2').Strategy;
//core
@@ -18,13 +19,23 @@ function callback(accessToken, refreshToken, profile, done) {
profileid: profile.id.toString()
},
defaults: {
- profile: JSON.stringify(profile)
+ profile: JSON.stringify(profile),
+ accessToken: accessToken,
+ refreshToken: refreshToken
}
}).spread(function(user, created) {
if (user) {
- if (config.debug)
- logger.info('user login: ' + user.id);
- return done(null, user);
+ if(user.accessToken == accessToken){
+ if (config.debug)
+ logger.info('user login: ' + user.id);
+ return done(null, user);
+ }
+ user.accessToken = accessToken;
+ user.save().then(function(){
+ if (config.debug)
+ logger.info('user login: ' + user.id);
+ return done(null, user);
+ })
}
}).catch(function(err) {
logger.error('auth callback failed: ' + err);
@@ -56,6 +67,15 @@ if (config.github) {
callbackURL: config.serverurl + '/auth/github/callback'
}, callback));
}
+//gitlab
+if (config.gitlab) {
+ passport.use(new GitlabStrategy({
+ baseURL: config.gitlab.baseURL,
+ clientID: config.gitlab.clientID,
+ clientSecret: config.gitlab.clientSecret,
+ callbackURL: config.serverurl + '/auth/gitlab/callback'
+ }, callback));
+}
//dropbox
if (config.dropbox) {
passport.use(new DropboxStrategy({
diff --git a/lib/config.js b/lib/config.js
index 6738d4a8..c138b459 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -59,6 +59,7 @@ var documentmaxlength = config.documentmaxlength || 100000;
var facebook = config.facebook || false;
var twitter = config.twitter || false;
var github = config.github || false;
+var gitlab = config.gitlab || false;
var dropbox = config.dropbox || false;
var imgur = config.imgur || false;
@@ -110,6 +111,7 @@ module.exports = {
facebook: facebook,
twitter: twitter,
github: github,
+ gitlab: gitlab,
dropbox: dropbox,
imgur: imgur
}; \ No newline at end of file
diff --git a/lib/models/user.js b/lib/models/user.js
index e1a373d6..639fc226 100644
--- a/lib/models/user.js
+++ b/lib/models/user.js
@@ -23,6 +23,9 @@ module.exports = function (sequelize, DataTypes) {
},
history: {
type: DataTypes.TEXT
+ },
+ accessToken: {
+ type: DataTypes.STRING
}
}, {
classMethods: {
@@ -72,6 +75,6 @@ module.exports = function (sequelize, DataTypes) {
}
}
});
-
+
return User;
}; \ No newline at end of file
diff --git a/lib/response.js b/lib/response.js
index 7a75e234..2114c99b 100644
--- a/lib/response.js
+++ b/lib/response.js
@@ -94,6 +94,7 @@ function showIndex(req, res, next) {
facebook: config.facebook,
twitter: config.twitter,
github: config.github,
+ gitlab: config.gitlab,
dropbox: config.dropbox,
});
res.write(content);
@@ -124,6 +125,7 @@ function responseHackMD(res, note) {
facebook: config.facebook,
twitter: config.twitter,
github: config.github,
+ gitlab: config.gitlab,
dropbox: config.dropbox,
});
var buf = html;