aboutsummaryrefslogtreecommitdiff
path: root/routes
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
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')
-rw-r--r--routes/index.js81
-rw-r--r--routes/user.js115
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