Fixed Login passport configuration, plus code refactoring and cleanup
This commit is contained in:
10
app.js
10
app.js
@ -8,11 +8,10 @@ var express = require('express'),
|
|||||||
|
|
||||||
// Configuration (API Keys, Database URI)
|
// Configuration (API Keys, Database URI)
|
||||||
var config = require('./config.json');
|
var config = require('./config.json');
|
||||||
|
var passportConf = require('./config/passport');
|
||||||
|
|
||||||
// Load controllers
|
// Load controllers
|
||||||
var home = require('./controllers/home'),
|
var home = require('./controllers/home'),
|
||||||
api = require('./controllers/api'),
|
|
||||||
auth = require('./controllers/auth'),
|
|
||||||
user = require('./controllers/user');
|
user = require('./controllers/user');
|
||||||
|
|
||||||
// Connect to database
|
// Connect to database
|
||||||
@ -41,17 +40,16 @@ app.use(app.router);
|
|||||||
app.get('/', home.index);
|
app.get('/', home.index);
|
||||||
|
|
||||||
app.get('/login', user.getLogin);
|
app.get('/login', user.getLogin);
|
||||||
app.post('/login', user.postlogin);
|
app.post('/login', user.postLogin);
|
||||||
|
|
||||||
app.get('/logout', user.logout);
|
app.get('/logout', user.logout);
|
||||||
|
|
||||||
app.get('/signup', user.getSignup);
|
app.get('/signup', user.getSignup);
|
||||||
app.post('/signup', user.postSignup);
|
app.post('/signup', user.postSignup);
|
||||||
|
|
||||||
app.get('/account', auth.ensureAuthenticated, user.account);
|
app.get('/account', passportConf.ensureAuthenticated, user.account);
|
||||||
|
|
||||||
app.get('/admin', auth.ensureAuthenticated, auth.ensureAdmin(), user.admin);
|
app.get('/admin', passportConf.ensureAuthenticated, passportConf.ensureAdmin(), user.admin);
|
||||||
app.get('/api/name', api.name);
|
|
||||||
app.get('/partials/:name', home.partials);
|
app.get('/partials/:name', home.partials);
|
||||||
|
|
||||||
app.get('*', home.index);
|
app.get('*', home.index);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
var passport = require('passport'),
|
var passport = require('passport'),
|
||||||
LocalStrategy = require('passport-local').Strategy,
|
LocalStrategy = require('passport-local').Strategy,
|
||||||
User = require('../models/user');
|
User = require('../models/User');
|
||||||
|
|
||||||
passport.serializeUser(function(user, done) {
|
passport.serializeUser(function(user, done) {
|
||||||
done(null, user.id);
|
done(null, user.id);
|
||||||
@ -12,10 +12,10 @@ passport.deserializeUser(function(id, done) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
passport.use(new LocalStrategy(function(username, password, done) {
|
passport.use(new LocalStrategy({ usernameField: 'email' },function(email, password, done) {
|
||||||
User.findOne({ username: username }, function(err, user) {
|
User.findOne({ email: email }, function(err, user) {
|
||||||
if (err) { return done(err); }
|
if (err) { return done(err); }
|
||||||
if (!user) { return done(null, false, { message: 'Unknown user ' + username }); }
|
if (!user) { return done(null, false, { message: 'Unknown user ' + email }); }
|
||||||
user.comparePassword(password, function(err, isMatch) {
|
user.comparePassword(password, function(err, isMatch) {
|
||||||
if (err) return done(err);
|
if (err) return done(err);
|
||||||
if(isMatch) {
|
if(isMatch) {
|
@ -1,5 +0,0 @@
|
|||||||
exports.name = function (req, res) {
|
|
||||||
res.json({
|
|
||||||
name: 'Bob'
|
|
||||||
});
|
|
||||||
};
|
|
@ -2,12 +2,14 @@ var mongoose = require('mongoose'),
|
|||||||
passport = require('passport');
|
passport = require('passport');
|
||||||
|
|
||||||
// Import models
|
// Import models
|
||||||
var User = require('../models/user');
|
|
||||||
|
|
||||||
exports.account = function(req, res) {
|
exports.account = function(req, res) {
|
||||||
res.render('account', { user: req.user });
|
res.render('account', { user: req.user });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GET /login
|
||||||
|
*/
|
||||||
exports.getLogin = function(req, res) {
|
exports.getLogin = function(req, res) {
|
||||||
res.render('login', {
|
res.render('login', {
|
||||||
title: 'Login',
|
title: 'Login',
|
||||||
@ -16,6 +18,29 @@ exports.getLogin = function(req, res) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* POST /login
|
||||||
|
*/
|
||||||
|
exports.postLogin = function(req, res, next) {
|
||||||
|
passport.authenticate('local', function(err, user, info) {
|
||||||
|
if (err) {
|
||||||
|
console.log(err);
|
||||||
|
return next(err);
|
||||||
|
}
|
||||||
|
if (!user) {
|
||||||
|
req.flash('message', [info.message]);
|
||||||
|
return res.redirect('/login');
|
||||||
|
}
|
||||||
|
req.logIn(user, function(err) {
|
||||||
|
if (err) return next(err);
|
||||||
|
return res.redirect('/');
|
||||||
|
});
|
||||||
|
})(req, res, next);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GET /signup
|
||||||
|
*/
|
||||||
exports.getSignup = function(req, res) {
|
exports.getSignup = function(req, res) {
|
||||||
res.render('signup', {
|
res.render('signup', {
|
||||||
title: 'Create Account',
|
title: 'Create Account',
|
||||||
@ -24,6 +49,9 @@ exports.getSignup = function(req, res) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* POST /signup
|
||||||
|
*/
|
||||||
exports.postSignup = function(req, res) {
|
exports.postSignup = function(req, res) {
|
||||||
|
|
||||||
var user = new User({
|
var user = new User({
|
||||||
@ -48,24 +76,16 @@ exports.postSignup = function(req, res) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GET /admin
|
||||||
|
*/
|
||||||
exports.admin = function(req, res) {
|
exports.admin = function(req, res) {
|
||||||
res.send('access granted admin!');
|
res.send('access granted admin!');
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.postlogin = function(req, res, next) {
|
/**
|
||||||
passport.authenticate('local', function(err, user, info) {
|
* GET /logout
|
||||||
if (err) return next(err);
|
*/
|
||||||
if (!user) {
|
|
||||||
req.flash('messages', [info.message]);
|
|
||||||
return res.redirect('/login');
|
|
||||||
}
|
|
||||||
req.logIn(user, function(err) {
|
|
||||||
if (err) { return next(err); }
|
|
||||||
return res.redirect('/');
|
|
||||||
});
|
|
||||||
})(req, res, next);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.logout = function(req, res) {
|
exports.logout = function(req, res) {
|
||||||
req.logout();
|
req.logout();
|
||||||
res.redirect('/');
|
res.redirect('/');
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
var mongoose = require('mongoose'),
|
var mongoose = require('mongoose'),
|
||||||
bcrypt = require('bcrypt');
|
bcrypt = require('bcrypt');
|
||||||
|
|
||||||
|
|
||||||
var userSchema = new mongoose.Schema({
|
var userSchema = new mongoose.Schema({
|
||||||
firstName: { type: String, required: true},
|
firstName: { type: String, required: true},
|
||||||
lastName: { type: String, required: true},
|
lastName: { type: String, required: true},
|
||||||
|
@ -6,4 +6,7 @@ block content
|
|||||||
p.lead
|
p.lead
|
||||||
| Use this document as a way to quickly start any new project.
|
| Use this document as a way to quickly start any new project.
|
||||||
br
|
br
|
||||||
| All you get is this text and a mostly barebones HTML document.
|
| All you get is this text and a mostly barebones HTML document.
|
||||||
|
|
||||||
|
if user
|
||||||
|
.alert.alert-success Congratulations, you are logged in!
|
Reference in New Issue
Block a user