diff --git a/app.js b/app.js index 453c78d..ba03bd7 100644 --- a/app.js +++ b/app.js @@ -11,7 +11,6 @@ var express = require('express'), bodyParser = require('body-parser'), requireDir = require('require-dir'), connection = require('express-myconnection'), - bcrypt = require('bcrypt-nodejs'), mysql = require('mysql2'); // ---------------------------------------------------------------------------- var app = express(); @@ -71,13 +70,29 @@ app.use(function(err, req, res, next) { // unless the filename is index. // // A '/' route in the users file becomes the '/users/' route. -var routes = requireDir('routes'); +var routes = requireDir('routes', {recurse: true}); Object.keys(routes).forEach(function(route) { var path = (route != 'index') ? '/' + route : '/'; + + var routeMethod = (typeof routes[route]) - app.use(path, routes[route]); + // Handle API routes + if (typeof routes[route] === 'object') + { + var innerRoute; + + for (innerRoute in routes[route]) + { + var innerPath = ['', route, innerRoute].join('/'); + app.use(innerPath, routes[route][innerRoute]); + } + } + else + { + app.use(path, routes[route]); + } }); // catch 404 and forward to error handler diff --git a/public/js/site.js b/public/js/site.js new file mode 100644 index 0000000..b9eab44 --- /dev/null +++ b/public/js/site.js @@ -0,0 +1,5 @@ +(function() { + "use strict"; + + +})(); \ No newline at end of file diff --git a/routes/task.js b/routes/api/task.js similarity index 100% rename from routes/task.js rename to routes/api/task.js diff --git a/routes/index.js b/routes/index.js index de7aaf7..43793e3 100644 --- a/routes/index.js +++ b/routes/index.js @@ -5,7 +5,7 @@ var router = express.Router(); router.get('/', function(req, res) { var util = require('util'); var request = util.inspect(req, {depth: 2}); - + // If the user isn't logged in if ( ! req.session.uid) { @@ -19,55 +19,10 @@ router.get('/', function(req, res) { res.render('index', { title: 'Node Task Manager', user: req.session.username, - req: request + req: request, + loggedin: true }); } }); -/* Login action */ -router.post('/login', function(req, res) { - var bcrypt = require('bcrypt-nodejs'); - - var user = req.body.user, - pass = req.body.pass; - - req.getConnection(function(err, connection) { - if (err) throw err; - - var sql = " SELECT id, username, email, password, timezone, num_format " + - " FROM todo_user " + - " WHERE email = ? OR username = ? "; - - // Find the username / email - connection.execute(sql, [user, user], function(err, rows, fields) { - if (err) throw err; - - var user = rows[0]; - - // Verify the password hash - bcrypt.compare(pass, user.password, function(err, passRes) { - if (err) throw err; - - // Password is good, set session data and redirect - if (passRes === true) - { - req.session.uid = user.id; - req.session.num_format = user.num_format; - req.session.username = user.username; - - res.redirect(303, '/'); - } - }); - }); - }) -}); - -/* Logout action */ -router.get('/logout', function(req, res) { - // Destroy the session, and redirect to the index page - req.session.destroy(function(err) { - res.redirect(303, '/'); - }); -}); - module.exports = router; diff --git a/routes/user.js b/routes/user.js index 1a28602..531229d 100644 --- a/routes/user.js +++ b/routes/user.js @@ -1,6 +1,52 @@ var express = require('express'); var router = express.Router(); +/* Login action */ +router.post('/login', function(req, res) { + var bcrypt = require('bcrypt-nodejs'); + + var user = req.body.user, + pass = req.body.pass; + + req.getConnection(function(err, connection) { + if (err) throw err; + + var sql = " SELECT id, username, email, password, timezone, num_format " + + " FROM todo_user " + + " WHERE email = ? OR username = ? "; + + // Find the username / email + connection.execute(sql, [user, user], function(err, rows, fields) { + if (err) throw err; + + var user = rows[0]; + + // Verify the password hash + bcrypt.compare(pass, user.password, function(err, passRes) { + if (err) throw err; + + // Password is good, set session data and redirect + if (passRes === true) + { + req.session.uid = user.id; + req.session.num_format = user.num_format; + req.session.username = user.username; + + res.redirect(303, '/'); + } + }); + }); + }) +}); + +/* Logout action */ +router.get('/logout', function(req, res) { + // Destroy the session, and redirect to the index page + req.session.destroy(function(err) { + res.redirect(303, '/'); + }); +}); + /* GET users listing. */ router.get('/list', function(req, res) { res.send('respond with a resource'); diff --git a/views/layout.dust b/views/layout.dust index d0fbe09..9c15d6c 100644 --- a/views/layout.dust +++ b/views/layout.dust @@ -5,13 +5,16 @@ +

{title}

diff --git a/views/login.dust b/views/login.dust index 26f4576..1814f8e 100644 --- a/views/login.dust +++ b/views/login.dust @@ -1,7 +1,7 @@ {>layout/} { +
Login
@@ -20,7 +20,9 @@
- +
+ +