Merge pull request #1609 from mic4ael/return-to-note-on-login

Better redirection after a successful login
This commit is contained in:
Yukai Huang 2021-04-16 12:20:09 +08:00 committed by GitHub
commit bf5325b37f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 3 deletions

View File

@ -5,9 +5,22 @@ const config = require('../config')
const logger = require('../logger')
exports.setReturnToFromReferer = function setReturnToFromReferer (req) {
var referer = req.get('referer')
if (!req.session) req.session = {}
req.session.returnTo = referer
var referer = req.get('referer')
var refererSearchParams = new URLSearchParams(new URL(referer).search)
var nextURL = refererSearchParams.get('next')
if (nextURL) {
var isRelativeNextURL = nextURL.indexOf('://') === -1 && !nextURL.startsWith('//')
if (isRelativeNextURL) {
req.session.returnTo = (new URL(nextURL, config.serverURL)).toString()
} else {
req.session.returnTo = config.serverURL
}
} else {
req.session.returnTo = referer
}
}
exports.passportGeneralCallback = function callback (accessToken, refreshToken, profile, done) {

View File

@ -32,8 +32,10 @@ function errorForbidden (req, res) {
if (req.user) {
responseError(res, '403', 'Forbidden', 'oh no.')
} else {
var nextURL = new URL('', config.serverURL)
nextURL.search = new URLSearchParams({ next: req.originalUrl })
req.flash('error', 'You are not allowed to access this page. Maybe try logging in?')
res.redirect(config.serverURL + '/')
res.redirect(nextURL.toString())
}
}