You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.5 KiB
34 lines
1.5 KiB
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 })); //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){ //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){ //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){ //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('/'); //redirect to home
|
|
});
|
|
});
|
|
|
|
controller.delete('/', function(req, res){ //logout route
|
|
req.session.destroy(function(){ //destroy the session
|
|
res.redirect('/'); //redirect to home
|
|
});
|
|
});
|
|
|
|
module.exports = controller;
|