diff --git a/app.js b/app.js index aa4834efff..449a9a8cd3 100755 --- a/app.js +++ b/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); diff --git a/controllers/auth.js b/config/passport.js similarity index 86% rename from controllers/auth.js rename to config/passport.js index 457f6e0734..44958f3634 100755 --- a/controllers/auth.js +++ b/config/passport.js @@ -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) { diff --git a/controllers/api.js b/controllers/api.js deleted file mode 100644 index ef2a18ab92..0000000000 --- a/controllers/api.js +++ /dev/null @@ -1,5 +0,0 @@ -exports.name = function (req, res) { - res.json({ - name: 'Bob' - }); -}; \ No newline at end of file diff --git a/controllers/user.js b/controllers/user.js index 07c85db673..388fd3caed 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -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('/'); diff --git a/models/user.js b/models/user.js index 01350b6d75..ff9bdb25cc 100644 --- a/models/user.js +++ b/models/user.js @@ -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}, diff --git a/views/index.jade b/views/index.jade index 60964150d5..8694c56e02 100644 --- a/views/index.jade +++ b/views/index.jade @@ -6,4 +6,7 @@ block content p.lead | 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. \ No newline at end of file + | All you get is this text and a mostly barebones HTML document. + + if user + .alert.alert-success Congratulations, you are logged in! \ No newline at end of file