diff --git a/controllers/logins.js b/controllers/logins.js index 92583d0..5a73cc4 100644 --- a/controllers/logins.js +++ b/controllers/logins.js @@ -1,32 +1,32 @@ -var controller = require('express').Router(); -var bcrypt = require('bcrypt'); -var methodOverride = require('method-override'); -var bodyParser = require('body-parser'); -var Users = require('../models/users.js'); +var controller = require('express').Router(); //require express and create a router (controller) +var bcrypt = require('bcrypt'); //require bcrypt for comparing passwords +var methodOverride = require('method-override'); //method override is used for create delete and put methods on forms +var bodyParser = require('body-parser'); //body parser takes form data and attaches it to req object +var Users = require('../models/users.js'); //require our Users model -controller.use(bodyParser.urlencoded({ extended: false })); -controller.use(methodOverride('_method')); +controller.use(bodyParser.urlencoded({ extended: false })); //tell body parser that we'll be passing in form data +controller.use(methodOverride('_method')); //tell method override to expect ?method=PUT/DELETE attached to POST requests -controller.get('/new', function(req, res){ - res.render('logins/new.ejs'); +controller.get('/new', function(req, res){ //GET request to /new show form for creating a new login session + res.render('logins/new.ejs'); //render logins/new.ejs }); -controller.post('/', function(req, res){ - Users.findOne({ +controller.post('/', function(req, res){ //handles request to log in + Users.findOne({ //find a user whose name is req.body.username (from form) where: { username:req.body.username } - }).then(function(foundUser){ - if(bcrypt.compareSync(req.body.password, foundUser.password)){ - req.session.currentUser = foundUser; + }).then(function(foundUser){ //once found + if(bcrypt.compareSync(req.body.password, foundUser.password)){ //compare password passed in through request to what's in the DB + req.session.currentUser = foundUser; //if they match, set the session variable } - res.redirect('/'); + res.redirect('/'); //redirect to home }); }); -controller.delete('/', function(req, res){ - req.session.destroy(function(){ - res.redirect('/'); +controller.delete('/', function(req, res){ //logout route + req.session.destroy(function(){ //destroy the session + res.redirect('/'); //redirect to home }); }); diff --git a/controllers/runs.js b/controllers/runs.js index 4367e33..cf75019 100644 --- a/controllers/runs.js +++ b/controllers/runs.js @@ -1,48 +1,48 @@ -var controller = require('express').Router(); -var bodyParser = require('body-parser'); -var Users = require('../models/users.js'); -var Runs = require('../models/run.js'); +var controller = require('express').Router(); //require express and create a router (controller) +var bodyParser = require('body-parser'); //body parser takes form data and attaches it to req object +var Users = require('../models/users.js'); //require our Users model +var Runs = require('../models/run.js'); //require our Runs model -controller.use(bodyParser.json()); +controller.use(bodyParser.json()); //anything handled by this controller is expecting JSON data, not form data -controller.get('/', function(req, res){ - Users.findById(req.session.currentUser.id).then(function(user){ - user.getRuns().then(function(runs){ - res.json(runs); +controller.get('/', function(req, res){ //route for finding all routes by a the session user + Users.findById(req.session.currentUser.id).then(function(user){ //find the user in the DB who's ID matches that of the session users + user.getRuns().then(function(runs){ //get that user's runs + res.json(runs); //return it the runs in JSON format }); }); }); -controller.post('/', function(req, res){ - Users.findById(req.session.currentUser.id).then(function(user){ - Runs.create(req.body).then(function(createdRun){ - user.addRun(createdRun).then(function(){ - res.json(createdRun); +controller.post('/', function(req, res){ //route for creating a new run + Users.findById(req.session.currentUser.id).then(function(user){ //get the user from the DB + Runs.create(req.body).then(function(createdRun){ //create a run from req.body data (JSON) + user.addRun(createdRun).then(function(){ //add the run to the user + res.json(createdRun); //return created run data }); });; }); }); -controller.delete('/:id', function(req, res){ - Runs.destroy({ +controller.delete('/:id', function(req, res){ //route for deleting a run + Runs.destroy({ //destroy the run as specified by id in the url where: { id: req.params.id } }).then(function(didSucceed){ - res.json(didSucceed); + res.json(didSucceed); //send back if it succeeded }); }); -controller.put('/:id', function(req, res){ +controller.put('/:id', function(req, res){ //alter a run Runs.update( - req.body, + req.body, //change the selected run to match the data passed in through req.body { where: { - id: req.params.id + id: req.params.id //id of run in the db must match the id in the url } } ).then(function(didSucceed){ - res.json(didSucceed); + res.json(didSucceed); //respond with success status }); }); diff --git a/controllers/users.js b/controllers/users.js index a06c428..9358ec0 100644 --- a/controllers/users.js +++ b/controllers/users.js @@ -1,18 +1,18 @@ -var controller = require('express').Router(); -var bodyParser = require('body-parser'); -var bcrypt = require('bcrypt'); -var Users = require('../models/users.js'); +var controller = require('express').Router(); //require express and create a router (controller) +var bodyParser = require('body-parser'); //body parser takes form data and attaches it to req object +var bcrypt = require('bcrypt'); //require bcrypt for salting passwords +var Users = require('../models/users.js'); //require our Users model -controller.use(bodyParser.urlencoded({ extended: false })) +controller.use(bodyParser.urlencoded({ extended: false })) //tell body parser that we'll be passing in form data -controller.get('/new', function(req, res){ - res.render('users/new.ejs'); +controller.get('/new', function(req, res){ //route for showing form for creating a new user + res.render('users/new.ejs'); //render /views/users/new.ejs }); -controller.post('/', function(req, res){ - req.body.password = bcrypt.hashSync(req.body.password, bcrypt.genSaltSync(10)); - Users.create(req.body).then(function(createdUser){ - res.redirect('/'); +controller.post('/', function(req, res){ //handles creation of new user + req.body.password = bcrypt.hashSync(req.body.password, bcrypt.genSaltSync(10)); //change req.body.password be the an encrypted version of itself + Users.create(req.body).then(function(createdUser){ //create a new user with data from req.body + res.redirect('/'); //redirec to home }); }); diff --git a/server.js b/server.js index 1b8282c..ed1cca6 100644 --- a/server.js +++ b/server.js @@ -1,24 +1,24 @@ -var express = require('express'); -var session = require('express-session'); -var app = express(); -var PORT = process.env.PORT || 3000; +var express = require('express'); //include express package +var session = require('express-session'); //include express sessions for session work +var app = express(); // create an express app +var PORT = process.env.PORT || 3000; //define the port to be either the environment variable, or 3000 -app.use(session({ - secret: "seakrett", - resave: false, - saveUninitialized: false +app.use(session({ //setting up session encryption info + secret: "seakrett", //unique keyword for encrypting session data + resave: false, // don't resave session if nothing changed + saveUninitialized: false //even if no data, set a cookie })); -app.use(express.static('public')); +app.use(express.static('public')); //set up a static asset dir in /public -app.get('/', function(req, res){ - res.render('index.ejs', { - currentUser: req.session.currentUser +app.get('/', function(req, res){ // route for / + res.render('index.ejs', { // render /views/index.ejs + currentUser: req.session.currentUser //pass in session currentUser var to view }); }); -var runsController = require('./controllers/runs.js'); -app.use('/runs/', runsController); +var runsController = require('./controllers/runs.js'); //require runsController +app.use('/runs/', runsController); //use it for anything starting with /runs var usersController = require('./controllers/users.js'); app.use('/users/', usersController); @@ -26,6 +26,6 @@ app.use('/users/', usersController); var loginsController = require('./controllers/logins.js'); app.use('/logins/', loginsController); -app.listen(PORT, function(){ +app.listen(PORT, function(){ //start the server console.log('listening on port ' + PORT); });