From 6433d1a69d5f6ad51e6afa24b9a5d7c55392d902 Mon Sep 17 00:00:00 2001 From: jkaplon Date: Tue, 12 Jul 2016 11:09:48 -0400 Subject: [PATCH] Login basically working, able to post to correct location's login handler. --- server.js | 38 +++++++++++++++++++++++++------------- views/login.hbs | 2 +- 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/server.js b/server.js index 84982ee..c6c51bc 100644 --- a/server.js +++ b/server.js @@ -83,12 +83,13 @@ app.use(passport.session()); // As with any middleware it is quintessential to call next() if the user is authenticated var isAuthenticated = function (req, res, next) { + var loc = req.params.loc; if (req.isAuthenticated()) { return next(); res.redirect(req); // I think this is what I want, but might cause re-dir loop. } else { // If user NOT authenticated, redirect to login page, do not call next(). - res.redirect('/login'); + res.redirect('/' + loc + '/login'); } } @@ -101,18 +102,6 @@ But, for now, order routes like this: - static routes, ordered more specific to less specific - dynamic routes, ordered more specific to less specific ********************************************************************************************************/ -app.get('/login', function(req, res){ - winston.info('GET /login'); - res.render('login'); -}); - -app.post('/login', - passport.authenticate('local', { failureRedirect: '/login' }), - function(req, res) { - winston.info('sucessful login'); - res.redirect('/:loc/admin'); // will this work, should it be `req`? -}); - app.get('/logout', function(req, res){ req.logout(); res.redirect('/'); // possible to go back to appropriate :loc? @@ -182,6 +171,7 @@ app.get('/:loc/admin', isAuthenticated, function(req, res) { res.status(404).send('Not found'); } else { // TODO: load admin template + res.status(200).send('admin template here...'); } }); @@ -190,6 +180,28 @@ app.post(':loc/admin', isAuthenticated, function(req, res){ // possible to forward req to POST to '/'? }); +app.get('/:loc/login', function(req, res){ + var loc = req.params.loc; + winston.info('GET ' + loc + '/login'); + res.render('login', {loc}, function(err, html) { + if(err !== null) { + winston.error(err); + } else { + res.send(html); + } + }); +}); + +app.post('/:loc/login', + passport.authenticate('local', { failureRedirect: '/:loc/login' }), + function(req, res) { + winston.info('sucessful login'); + //res.redirect('/:loc/admin'); // no worky, :loc is literal here, not repop by param. + //res.redirect(req); // no worky, get https://tenniscourtsopen.com/[object%20Object] + var loc = req.params.loc; + res.redirect('/' + loc + '/admin'); // no worky, undefined here...how to include w/post? +}); + app.get('/:loc/status', function(req, res) { var loc = req.params.loc; if (loc !== 'tt') { diff --git a/views/login.hbs b/views/login.hbs index 6b88556..74ee717 100644 --- a/views/login.hbs +++ b/views/login.hbs @@ -4,7 +4,7 @@

TT Tennis Courts Are...

-
+