Skip to content

Commit bf5325b

Browse files
authored
Merge pull request #1609 from mic4ael/return-to-note-on-login
Better redirection after a successful login
2 parents e00eaa8 + 7d815cc commit bf5325b

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

lib/auth/utils.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,22 @@ const config = require('../config')
55
const logger = require('../logger')
66

77
exports.setReturnToFromReferer = function setReturnToFromReferer (req) {
8-
var referer = req.get('referer')
98
if (!req.session) req.session = {}
10-
req.session.returnTo = referer
9+
10+
var referer = req.get('referer')
11+
var refererSearchParams = new URLSearchParams(new URL(referer).search)
12+
var nextURL = refererSearchParams.get('next')
13+
14+
if (nextURL) {
15+
var isRelativeNextURL = nextURL.indexOf('://') === -1 && !nextURL.startsWith('//')
16+
if (isRelativeNextURL) {
17+
req.session.returnTo = (new URL(nextURL, config.serverURL)).toString()
18+
} else {
19+
req.session.returnTo = config.serverURL
20+
}
21+
} else {
22+
req.session.returnTo = referer
23+
}
1124
}
1225

1326
exports.passportGeneralCallback = function callback (accessToken, refreshToken, profile, done) {

lib/response.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,10 @@ function errorForbidden (req, res) {
3232
if (req.user) {
3333
responseError(res, '403', 'Forbidden', 'oh no.')
3434
} else {
35+
var nextURL = new URL('', config.serverURL)
36+
nextURL.search = new URLSearchParams({ next: req.originalUrl })
3537
req.flash('error', 'You are not allowed to access this page. Maybe try logging in?')
36-
res.redirect(config.serverURL + '/')
38+
res.redirect(nextURL.toString())
3739
}
3840
}
3941

0 commit comments

Comments
 (0)