Local authentication
This commit is contained in:
parent
dc6fc449f0
commit
3d20fee5df
@ -19,11 +19,12 @@
|
||||
- [Installation Guide](https://requarks-wiki.readme.io/docs/prerequisites)
|
||||
|
||||
##### Milestones
|
||||
- [ ] Account Management
|
||||
- [ ] Assets Management
|
||||
- [x] Images
|
||||
- [ ] Files/Documents
|
||||
- [ ] Authentication
|
||||
- [ ] Local
|
||||
- [x] Authentication
|
||||
- [x] Local
|
||||
- [x] Microsoft Account
|
||||
- [x] Google ID
|
||||
- [x] Facebook
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,6 +1,8 @@
|
||||
@import './layout/_base';
|
||||
@import './layout/_mixins';
|
||||
|
||||
@import './libs/animate.min.css';
|
||||
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
@ -80,6 +82,34 @@ a {
|
||||
animation: headerIntro 3s ease;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.25rem;
|
||||
font-weight: normal;
|
||||
color: #FB8C00;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
animation: shake 1s ease;
|
||||
|
||||
> .fa {
|
||||
margin-right: 7px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 0.8rem;
|
||||
font-weight: normal;
|
||||
color: rgba(255,255,255,0.7);
|
||||
padding: 0;
|
||||
margin: 0 0 15px 0;
|
||||
animation: fadeIn 3s ease;
|
||||
}
|
||||
|
||||
form {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
input[type=text], input[type=password] {
|
||||
width: 350px;
|
||||
max-width: 80vw;
|
||||
@ -96,7 +126,7 @@ a {
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
border-color: rgba(255,255,255,0.8);
|
||||
border-color: #FB8C00;
|
||||
}
|
||||
|
||||
}
|
||||
@ -148,6 +178,10 @@ a {
|
||||
background-color: #009688;
|
||||
border-color: lighten(#009688, 10%);
|
||||
|
||||
&:focus {
|
||||
border-color: #FFF;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: darken(#009688, 10%);
|
||||
}
|
||||
@ -158,6 +192,10 @@ a {
|
||||
background-color: #2196F3;
|
||||
border-color: lighten(#2196F3, 10%);
|
||||
|
||||
&:focus {
|
||||
border-color: #FFF;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: darken(#2196F3, 10%);
|
||||
}
|
||||
@ -168,6 +206,10 @@ a {
|
||||
background-color: #673AB7;
|
||||
border-color: lighten(#673AB7, 10%);
|
||||
|
||||
&:focus {
|
||||
border-color: #FFF;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
background-color: darken(#673AB7, 10%);
|
||||
}
|
||||
|
@ -41,10 +41,8 @@ router.post('/login', bruteforce.prevent, function(req, res, next) {
|
||||
|
||||
if (!user) {
|
||||
req.flash('alert', {
|
||||
class: 'error',
|
||||
title: 'Invalid login',
|
||||
message: "The email or password is invalid.",
|
||||
iconClass: 'fa-times'
|
||||
message: "The email or password is invalid."
|
||||
});
|
||||
return res.redirect('/login');
|
||||
}
|
||||
|
@ -2,7 +2,9 @@
|
||||
|
||||
module.exports = (socket) => {
|
||||
|
||||
console.log(socket.request.user);
|
||||
if(!socket.request.user.logged_in) {
|
||||
return;
|
||||
}
|
||||
|
||||
//-----------------------------------------
|
||||
// SEARCH
|
||||
|
23
libs/auth.js
23
libs/auth.js
@ -34,23 +34,24 @@ module.exports = function(passport, appconfig) {
|
||||
passport.use('local',
|
||||
new LocalStrategy({
|
||||
usernameField : 'email',
|
||||
passwordField : 'password',
|
||||
passReqToCallback : true
|
||||
passwordField : 'password'
|
||||
},
|
||||
function(req, uEmail, uPassword, done) {
|
||||
db.User.findOne({ 'email' : uEmail }).then((user) => {
|
||||
if (user) {
|
||||
user.validatePassword(uPassword).then((isValid) => {
|
||||
return (isValid) ? done(null, user) : done(null, false);
|
||||
(uEmail, uPassword, done) => {
|
||||
db.User.findOne({ email: uEmail, provider: 'local' }).then((user) => {
|
||||
if(user) {
|
||||
return user.validatePassword(uPassword).then(() => {
|
||||
return done(null, user) || true;
|
||||
}).catch((err) => {
|
||||
return done(err, null);
|
||||
});
|
||||
} else {
|
||||
return done(null, false);
|
||||
return done(new Error('Invalid Login'), null);
|
||||
}
|
||||
}).catch((err) => {
|
||||
done(err);
|
||||
done(err, null) ;
|
||||
});
|
||||
})
|
||||
);
|
||||
}
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
|
@ -78,9 +78,8 @@ userSchema.statics.hashPassword = (rawPwd) => {
|
||||
};
|
||||
|
||||
userSchema.methods.validatePassword = function(rawPwd) {
|
||||
let self = this;
|
||||
return bcrypt.hash(rawPwd).then((pwd) => {
|
||||
return (self.password === pwd) ? true : Promise.reject(new Error('Invalid Password'));
|
||||
return bcrypt.compare(rawPwd, this.password).then((isValid) => {
|
||||
return (isValid) ? true : Promise.reject(new Error('Invalid Login'));
|
||||
});
|
||||
};
|
||||
|
||||
|
@ -32,10 +32,16 @@ html
|
||||
#root
|
||||
h1= appconfig.title
|
||||
h2 Login required
|
||||
if appflash.length > 0
|
||||
h3
|
||||
i.fa.fa-warning
|
||||
= appflash[0].title
|
||||
h4= appflash[0].message
|
||||
if appconfig.auth.local.enabled
|
||||
input#login-user(type='text', placeholder='Email address')
|
||||
input#login-pass(type='password', placeholder='Password')
|
||||
button Log In
|
||||
form(method='post', action='/login')
|
||||
input#login-user(type='text', name='email', placeholder='Email address')
|
||||
input#login-pass(type='password', name='password', placeholder='Password')
|
||||
button(type='submit') Log In
|
||||
if appconfig.authStrategies.socialEnabled
|
||||
#social
|
||||
if appconfig.auth.local.enabled
|
||||
@ -59,4 +65,3 @@ html
|
||||
a.icon(href='https://github.com/Requarks/wiki')
|
||||
i.fa.fa-github
|
||||
a(href='https://github.com/Requarks/wiki') Requarks Wiki
|
||||
|
Loading…
Reference in New Issue
Block a user