aboutsummaryrefslogtreecommitdiff
path: root/routes/user.js
diff options
context:
space:
mode:
authornanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-22 11:33:52 +0000
committernanalelfe <nargiza.nosirova@mail.utoronto.ca>2016-07-22 11:33:52 +0000
commit90fe02430c828b0d99d5f60c3073c54278d85236 (patch)
tree1ec8feeb9e8ed3ceea9a8a34652ccc9bea4c7de4 /routes/user.js
parent7d492571ff92dc5b5ac963ab156d27ef5b51f782 (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.js115
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