diff options
| author | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-22 11:33:52 +0000 |
|---|---|---|
| committer | nanalelfe <nargiza.nosirova@mail.utoronto.ca> | 2016-07-22 11:33:52 +0000 |
| commit | 90fe02430c828b0d99d5f60c3073c54278d85236 (patch) | |
| tree | 1ec8feeb9e8ed3ceea9a8a34652ccc9bea4c7de4 /routes | |
| parent | 7d492571ff92dc5b5ac963ab156d27ef5b51f782 (diff) | |
Cleaned up the routing for users. Header changeable depending on whether user is logged in or not. Logout option.
Diffstat (limited to 'routes')
| -rw-r--r-- | routes/index.js | 81 | ||||
| -rw-r--r-- | routes/user.js | 115 |
2 files changed, 115 insertions, 81 deletions
diff --git a/routes/index.js b/routes/index.js index 51e1cd2..a0a66d0 100644 --- a/routes/index.js +++ b/routes/index.js @@ -1,11 +1,6 @@ var dbFile = require("../node_simple.js"); var express = require('express'); var router = express.Router(); -var csrf = require('csurf'); // Cross-Site Request Forgery prevention -var passport = require('passport'); - -var csrfProtection = csrf(); -router.use(csrfProtection); // router is protected /* Render/GET homepage. */ router.get('/', function(req, res, next) { @@ -24,11 +19,6 @@ router.get('/user_solutions', function(req, res, next) { res.render('user_solutions'); }); -/* Render/GET user_profile page */ -router.get('/user_profile', function(req, res, next) { - res.render('user_profile_alt'); -}); - /* Render/GET questions page */ router.get('/questions', function(req, res, next) { res.render('questions'); @@ -155,79 +145,8 @@ router.get('/questions/:exam_id', function (req,res) { }); }); -router.get('/signup', function(req, res, next) { - res.render('signup', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); - req.session.errors = null; -}); - -router.get('/signup/failed', function(req, res, next) { - var msg = req.flash('error'); - - res.render('signup', {csrfToken: req.csrfToken(), - success: req.session.success, - errors: req.session.errors, - flashMsg: msg}); -}); - - -router.get('/signin', function (req, res, next) { - var msg = req.flash('error'); - res.render('signin', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors, flashMsg: msg}); -}); -router.post('/signup', function(req, res, next) { - req.check('fname', 'Please enter a valid first name.').notEmpty().withMessage('First name required.').isAlpha(); - req.check('lname', 'Please enter a valid first name.').notEmpty().withMessage('Last name required.').isAlpha(); - req.check('email', 'Enter a valid Email address').notEmpty().withMessage('Email required').isEmail(); - req.check('usrname', 'Enter a valid username').notEmpty().withMessage('Username required.'); - req.check('password', "Password should be between 6 and 12 characters.") - .notEmpty().withMessage('Password required').isLength({min: 6, max: 12}); - req.check('password', "The confirmation password doesn't match.").equals(req.body.confirmPassword); - req.check('phone_num', 'Please enter a valid phone number').optional().isMobilePhone('en-CA'); - // password has to be at least 4 characters long - - var errors = req.validationErrors(); - if (errors) { - req.session.errors = errors; - req.session.success = false; - res.redirect('/signup'); - } else { - console.log("GOT SUCCESS"); - passport.authenticate('local_signup', { - successRedirect: '/user_profile', - failureRedirect: '/signup/failed', - failureFlash: true - })(req, res); - - } - //res.redirect('/signup'); - -}); - -router.post('/signin', function(req, res, next) { - req.check('usrname', 'Username field is empty.').notEmpty(); - req.check('password', "Password field is empty.").notEmpty(); - // password has to be at least 4 characters long - - var errors = req.validationErrors(); - if (errors) { - req.session.errors = errors; - req.session.success = false; - res.redirect('/signin'); - } else { - console.log("GOT SUCCESS"); - passport.authenticate('local_signin', { - successRedirect: '/user_profile', - failureRedirect: '/signin', - failureFlash: true - })(req, res); - - } - //res.redirect('/signup'); - -}); - /**** Helpers ****/ function getExamsForCourseCode(courseCode) { diff --git a/routes/user.js b/routes/user.js new file mode 100644 index 0000000..a8e90bb --- /dev/null +++ b/routes/user.js @@ -0,0 +1,115 @@ +var express = require('express'); +var router = express.Router(); +var csrf = require('csurf'); // Cross-Site Request Forgery prevention +var passport = require('passport'); + +var csrfProtection = csrf(); +router.use(csrfProtection); // router is protected + + +router.get('/logout', function (req, res, next) { + req.logout(); + res.redirect('/'); +}); + +/* Render/GET user_profile page */ +router.get('/user_profile', loggedIn, function(req, res, next) { + res.render('user_profile_alt'); +}); + +router.get('/signup', function(req, res, next) { + res.render('signup', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); + req.session.errors = null; +}); + +router.get('/signup/failed', function(req, res, next) { + var msg = req.flash('error'); + + res.render('signup', {csrfToken: req.csrfToken(), + success: req.session.success, + errors: req.session.errors, + flashMsg: msg}); +}); + + +router.get('/signin', function (req, res, next) { + var msg = req.flash('error'); + res.render('signin', { + csrfToken: req.csrfToken(), + success: req.session.success, + errors: req.session.errors, + flashMsg: msg + }); +}); + + +router.post('/signup', loggedOut, function(req, res, next) { + req.check('fname', 'Please enter a valid first name.').notEmpty().withMessage('First name required.').isAlpha(); + req.check('lname', 'Please enter a valid first name.').notEmpty().withMessage('Last name required.').isAlpha(); + req.check('email', 'Enter a valid Email address').notEmpty().withMessage('Email required').isEmail(); + req.check('usrname', 'Enter a valid username').notEmpty().withMessage('Username required.'); + req.check('password', "Password should be between 6 and 12 characters.") + .notEmpty().withMessage('Password required').isLength({min: 6, max: 12}); + req.check('password', "The confirmation password doesn't match.").equals(req.body.confirmPassword); + req.check('phone_num', 'Please enter a valid phone number').isMobilePhone('en-CA').optional(); + // password has to be at least 4 characters long + + var errors = req.validationErrors(); + if (errors) { + req.session.errors = errors; + req.session.success = false; + res.redirect('/signup'); + } else { + console.log("GOT SUCCESS"); + passport.authenticate('local_signup', { + successRedirect: '/user/user_profile', + failureRedirect: '/user/signup/failed', + failureFlash: true + })(req, res); + + } + //res.redirect('/signup'); + +}); + +router.post('/signin', loggedOut, function(req, res, next) { + req.check('usrname', 'Username field is empty.').notEmpty(); + req.check('password', "Password field is empty.").notEmpty(); + // password has to be at least 4 characters long + + var errors = req.validationErrors(); + if (errors) { + req.session.errors = errors; + req.session.success = false; + res.redirect('/signin'); + } else { + console.log("GOT SUCCESS"); + passport.authenticate('local_signin', { + successRedirect: '/user/user_profile', + failureRedirect: '/user/signin', + failureFlash: true + })(req, res); + + } + //res.redirect('/signup'); + +}); + +module.exports = router; + + + +function loggedIn(req, res, next) { + if (req.isAuthenticated()) { + return next(); + } + res.redirect('/'); +} + + +function loggedOut(req, res, next) { + if (!req.isAuthenticated()) { + return next(); + } + res.redirect('/'); +}
\ No newline at end of file |
