mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-13 14:44:43 -04:00
Update to support optional email register and signin
This commit is contained in:
parent
52772829ce
commit
a73d9ce39e
14 changed files with 180 additions and 16 deletions
27
lib/auth.js
27
lib/auth.js
|
@ -7,6 +7,8 @@ var GithubStrategy = require('passport-github').Strategy;
|
|||
var GitlabStrategy = require('passport-gitlab2').Strategy;
|
||||
var DropboxStrategy = require('passport-dropbox-oauth2').Strategy;
|
||||
var GoogleStrategy = require('passport-google-oauth20').Strategy;
|
||||
var LocalStrategy = require('passport-local').Strategy;
|
||||
var validator = require('validator');
|
||||
|
||||
//core
|
||||
var config = require('./config.js');
|
||||
|
@ -35,12 +37,10 @@ function callback(accessToken, refreshToken, profile, done) {
|
|||
if (user.accessToken != accessToken) {
|
||||
user.accessToken = accessToken;
|
||||
needSave = true;
|
||||
|
||||
}
|
||||
if (user.refreshToken != refreshToken) {
|
||||
user.refreshToken = refreshToken;
|
||||
needSave = true;
|
||||
|
||||
}
|
||||
if (needSave) {
|
||||
user.save().then(function () {
|
||||
|
@ -57,7 +57,7 @@ function callback(accessToken, refreshToken, profile, done) {
|
|||
}).catch(function (err) {
|
||||
logger.error('auth callback failed: ' + err);
|
||||
return done(err, null);
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
//facebook
|
||||
|
@ -109,4 +109,25 @@ if (config.google) {
|
|||
clientSecret: config.google.clientSecret,
|
||||
callbackURL: config.serverurl + '/auth/google/callback'
|
||||
}, callback));
|
||||
}
|
||||
// email
|
||||
if (config.email) {
|
||||
passport.use(new LocalStrategy({
|
||||
usernameField: 'email'
|
||||
},
|
||||
function(email, password, done) {
|
||||
if (!validator.isEmail(email)) return done(null, false);
|
||||
models.User.findOne({
|
||||
where: {
|
||||
email: email
|
||||
}
|
||||
}).then(function (user) {
|
||||
if (!user) return done(null, false);
|
||||
if (!user.verifyPassword(password)) return done(null, false);
|
||||
return done(null, user);
|
||||
}).catch(function (err) {
|
||||
logger.error(err);
|
||||
return done(err);
|
||||
});
|
||||
}));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue