Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var router = express.Router();
- var User = require('../models/user');
- var mid = require('../middleware');
- // Render templates
- router.get('/', function(req, res, next) {
- return res.render('index', { title: 'Home' });
- });
- router.get('/about', function(req, res, next) {
- return res.render('about', { title: 'About' });
- });
- router.get('/contact', function(req, res, next) {
- return res.render('contact', { title: 'Contact' });
- });
- // register routes
- // GET /register
- router.get('/register', mid.loggedOut, function(req, res, next) {
- return res.render('register', { title: 'Sign Up' });
- });
- // POST /register
- router.post('/register', function(req, res, next) {
- if (req.body.email &&
- req.body.name &&
- req.body.favoriteBook &&
- req.body.password &&
- req.body.confirmPassword) {
- if (req.body.password !== req.body.confirmPassword) {
- var err = new Error('Passwords do not match.');
- err.status = 400;
- return next(err);
- }
- // retrieve data from form
- // assign to object to insert in Mongo
- var userData = {
- email: req.body.email,
- name: req.body.name,
- favoriteBook: req.body.favoriteBook,
- password: req.body.password
- };
- // create new user record
- User.create(userData, function (error, user) {
- if (error) {
- return next(error);
- } else {
- req.session.userId = user._id;
- return res.redirect('/profile');
- }
- });
- } else {
- var err = new Error('All fields required.');
- err.status = 400;
- return next(err);
- }
- });
- // login routes
- // GET /login
- router.get('/login', mid.loggedOut, function(req, res, next) {
- return res.render('login', { title: 'Log in'})
- });
- // GET /logout
- router.get('/logout', function(req, res, next) {
- if (req.session) {
- // delete session object
- req.session.destroy(function(err) {
- if(err) {
- return next(err);
- } else {
- return res.redirect('/');
- }
- });
- }
- });
- // POST /login
- router.post('/login', function(req, res, next) {
- if (req.body.email && req.body.password) {
- User.authenticate(req.body.email, req.body.password, function (error, user) {
- if (error || !user) {
- var err = new Error('Wrong email or password.');
- err.status = 401;
- return next(err);
- } else {
- req.session.userId = user._id;
- return res.redirect('/profile');
- }
- });
- } else {
- var err = new Error('Email and password are required.');
- err.status = 401;
- return next(err);
- }
- });
- // GET /profile
- router.get('/profile', mid.requiresLogin, function(req, res, next) {
- User.findById(req.session.userId)
- .exec(function (error, user) {
- if (error) {
- return next(error);
- } else {
- return res.render('profile', { title: 'Profile', name: user.name, favorite: user.favoriteBook });
- }
- });
- });
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement