From affe228986f76b06aa96b3789852a01f8a950644 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Sat, 23 Aug 2014 19:04:14 -0700 Subject: Direct to originally requested page after authorization --- app.js | 9 ++++++--- routes/sessions.js | 8 +++++--- src/app.coffee | 9 ++++++--- src/routes/sessions.coffee | 8 +++----- 4 files changed, 20 insertions(+), 14 deletions(-) diff --git a/app.js b/app.js index 74e8611d..e5fa6f70 100644 --- a/app.js +++ b/app.js @@ -77,11 +77,14 @@ if (req.params.user === ((_ref = req.user) != null ? _ref.username : void 0) || ((_ref1 = req.user) != null ? _ref1.username : void 0) === 'admin') { return next(); } + req.session.redirect = req.path; return res.redirect('/login'); }; cache = function(req, res, next) { - res.setHeader("Cache-Control", "public, max-age=900"); + if (req.path !== '/login') { + res.setHeader("Cache-Control", "public, max-age=900"); + } return next(); }; @@ -122,7 +125,7 @@ app.post('/users', users.create); - app.get('/:user/edit', authorize, cache, users.edit); + app.get('/:user/edit', authorize, users.edit); app.post('/:user', authorize, users.update); @@ -130,7 +133,7 @@ app.post('/:user/transactions', transactions.create); - app.get('/:user/report', authorize, cache, transactions.index); + app.get('/:user/report', authorize, transactions.index); app.get('/:user.json', users.json); diff --git a/routes/sessions.js b/routes/sessions.js index 6f04d2fd..38ae74b1 100644 --- a/routes/sessions.js +++ b/routes/sessions.js @@ -34,11 +34,13 @@ if (err) { return next(err); } - if (/edit/.test(req.headers['referer'])) { - url = "/" + user.username + "/edit"; - } else { + if (req.session.redirect != null) { + url = req.session.redirect; + } + if (url == null) { url = "/" + user.username; } + delete req.session.redirect; return res.redirect(url); }); })(req, res, next); diff --git a/src/app.coffee b/src/app.coffee index a0ac6334..4198754c 100644 --- a/src/app.coffee +++ b/src/app.coffee @@ -34,10 +34,13 @@ authorize = (req, res, next) -> if req.params.user is req.user?.username or req.user?.username is 'admin' return next() + + req.session.redirect = req.path res.redirect('/login') cache = (req, res, next) -> - res.setHeader "Cache-Control", "public, max-age=900" + unless req.path is '/login' + res.setHeader "Cache-Control", "public, max-age=900" next() fetchRates = -> @@ -69,12 +72,12 @@ app.get('/logout', sessions.destroy) app.get('/users/new', cache, users.new) app.post('/users', users.create) -app.get('/:user/edit', authorize, cache, users.edit) +app.get('/:user/edit', authorize, users.edit) app.post('/:user', authorize, users.update) app.get('/:user/transactions.json', authorize, transactions.json) app.post('/:user/transactions', transactions.create) -app.get('/:user/report', authorize, cache, transactions.index) +app.get('/:user/report', authorize, transactions.index) app.get('/:user.json', users.json) app.get('/:user', cache, users.show) diff --git a/src/routes/sessions.coffee b/src/routes/sessions.coffee index 67efba75..30d3cdef 100644 --- a/src/routes/sessions.coffee +++ b/src/routes/sessions.coffee @@ -21,11 +21,9 @@ module.exports = (passport) -> if (err) return next(err) - if /edit/.test(req.headers['referer']) - url = "/#{user.username}/edit" - else - url = "/#{user.username}" - + url = req.session.redirect if req.session.redirect? + url ?= "/#{user.username}" + delete req.session.redirect return res.redirect(url) ) )(req, res, next) -- cgit v1.2.3