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/user.js | |
| 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/user.js')
| -rw-r--r-- | routes/user.js | 115 |
1 files changed, 115 insertions, 0 deletions
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 |
