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)
|
||||
var config = require('./config.json');
|
||||
var passportConf = require('./config/passport');
|
||||
|
||||
// Load controllers
|
||||
var home = require('./controllers/home'),
|
||||
api = require('./controllers/api'),
|
||||
auth = require('./controllers/auth'),
|
||||
user = require('./controllers/user');
|
||||
|
||||
// Connect to database
|
||||
@ -41,17 +40,16 @@ app.use(app.router);
|
||||
app.get('/', home.index);
|
||||
|
||||
app.get('/login', user.getLogin);
|
||||
app.post('/login', user.postlogin);
|
||||
app.post('/login', user.postLogin);
|
||||
|
||||
app.get('/logout', user.logout);
|
||||
|
||||
app.get('/signup', user.getSignup);
|
||||
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('/api/name', api.name);
|
||||
app.get('/admin', passportConf.ensureAuthenticated, passportConf.ensureAdmin(), user.admin);
|
||||
app.get('/partials/:name', home.partials);
|
||||
|
||||
app.get('*', home.index);
|
||||
|
@ -1,6 +1,6 @@
|
||||
var passport = require('passport'),
|
||||
LocalStrategy = require('passport-local').Strategy,
|
||||
User = require('../models/user');
|
||||
User = require('../models/User');
|
||||
|
||||
passport.serializeUser(function(user, done) {
|
||||
done(null, user.id);
|
||||
@ -12,10 +12,10 @@ passport.deserializeUser(function(id, done) {
|
||||
});
|
||||
});
|
||||
|
||||
passport.use(new LocalStrategy(function(username, password, done) {
|
||||
User.findOne({ username: username }, function(err, user) {
|
||||
passport.use(new LocalStrategy({ usernameField: 'email' },function(email, password, done) {
|
||||
User.findOne({ email: email }, function(err, user) {
|
||||
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) {
|
||||
if (err) return done(err);
|
||||
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');
|
||||
|
||||
// Import models
|
||||
var User = require('../models/user');
|
||||
|
||||
exports.account = function(req, res) {
|
||||
res.render('account', { user: req.user });
|
||||
};
|
||||
|
||||
/**
|
||||
* GET /login
|
||||
*/
|
||||
exports.getLogin = function(req, res) {
|
||||
res.render('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) {
|
||||
res.render('signup', {
|
||||
title: 'Create Account',
|
||||
@ -24,6 +49,9 @@ exports.getSignup = function(req, res) {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* POST /signup
|
||||
*/
|
||||
exports.postSignup = function(req, res) {
|
||||
|
||||
var user = new User({
|
||||
@ -48,24 +76,16 @@ exports.postSignup = function(req, res) {
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* GET /admin
|
||||
*/
|
||||
exports.admin = function(req, res) {
|
||||
res.send('access granted admin!');
|
||||
};
|
||||
|
||||
exports.postlogin = function(req, res, next) {
|
||||
passport.authenticate('local', function(err, user, info) {
|
||||
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);
|
||||
};
|
||||
|
||||
/**
|
||||
* GET /logout
|
||||
*/
|
||||
exports.logout = function(req, res) {
|
||||
req.logout();
|
||||
res.redirect('/');
|
||||
|
@ -1,7 +1,6 @@
|
||||
var mongoose = require('mongoose'),
|
||||
bcrypt = require('bcrypt');
|
||||
|
||||
|
||||
var userSchema = new mongoose.Schema({
|
||||
firstName: { type: String, required: true},
|
||||
lastName: { type: String, required: true},
|
||||
|
@ -7,3 +7,6 @@ block content
|
||||
| Use this document as a way to quickly start any new project.
|
||||
br
|
||||
| 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