mirror of
https://github.com/NodeBB/NodeBB.git
synced 2025-11-01 19:46:01 +01:00
closes #5156
This commit is contained in:
@@ -272,6 +272,9 @@ $(document).ready(function () {
|
|||||||
apiXHR = $.ajax({
|
apiXHR = $.ajax({
|
||||||
url: RELATIVE_PATH + '/api/' + url,
|
url: RELATIVE_PATH + '/api/' + url,
|
||||||
cache: false,
|
cache: false,
|
||||||
|
headers: {
|
||||||
|
'X-Return-To': app.previousUrl
|
||||||
|
},
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
if (!data) {
|
if (!data) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -59,17 +59,6 @@ define('forum/login', ['translator'], function (translator) {
|
|||||||
} else {
|
} else {
|
||||||
$('#content #username').focus();
|
$('#content #username').focus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Add "returnTo" data if present
|
|
||||||
if (app.previousUrl && $('#returnTo').length === 0) {
|
|
||||||
var returnToEl = document.createElement('input');
|
|
||||||
returnToEl.type = 'hidden';
|
|
||||||
returnToEl.name = 'returnTo';
|
|
||||||
returnToEl.id = 'returnTo';
|
|
||||||
returnToEl.value = app.previousUrl;
|
|
||||||
$(returnToEl).appendTo(formEl);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return Login;
|
return Login;
|
||||||
|
|||||||
@@ -196,15 +196,6 @@ authenticationController.registerAbort = function (req, res) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
authenticationController.login = function (req, res, next) {
|
authenticationController.login = function (req, res, next) {
|
||||||
// Handle returnTo data
|
|
||||||
if (req.body.hasOwnProperty('returnTo') && !req.session.returnTo) {
|
|
||||||
// As req.body is data obtained via userland, it is untrusted, restrict to internal links only
|
|
||||||
var parsed = url.parse(req.body.returnTo);
|
|
||||||
var isInternal = utils.isInternalURI(url.parse(req.body.returnTo), nconf.get('url_parsed'), nconf.get('relative_path'));
|
|
||||||
|
|
||||||
req.session.returnTo = isInternal ? req.body.returnTo : nconf.get('url');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (plugins.hasListeners('action:auth.overrideLogin')) {
|
if (plugins.hasListeners('action:auth.overrideLogin')) {
|
||||||
return continueLogin(req, res, next);
|
return continueLogin(req, res, next);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ Controllers.login = function (req, res, next) {
|
|||||||
var registrationType = meta.config.registrationType || 'normal';
|
var registrationType = meta.config.registrationType || 'normal';
|
||||||
|
|
||||||
var allowLoginWith = (meta.config.allowLoginWith || 'username-email');
|
var allowLoginWith = (meta.config.allowLoginWith || 'username-email');
|
||||||
|
var returnTo = req.headers['x-return-to'].replace(nconf.get('url'), '');
|
||||||
|
|
||||||
var errorText;
|
var errorText;
|
||||||
if (req.query.error === 'csrf-invalid') {
|
if (req.query.error === 'csrf-invalid') {
|
||||||
@@ -112,6 +113,10 @@ Controllers.login = function (req, res, next) {
|
|||||||
errorText = validator.escape(String(req.query.error));
|
errorText = validator.escape(String(req.query.error));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (returnTo) {
|
||||||
|
req.session.returnTo = returnTo;
|
||||||
|
}
|
||||||
|
|
||||||
data.alternate_logins = loginStrategies.length > 0;
|
data.alternate_logins = loginStrategies.length > 0;
|
||||||
data.authentication = loginStrategies;
|
data.authentication = loginStrategies;
|
||||||
data.allowLocalLogin = parseInt(meta.config.allowLocalLogin, 10) === 1 || parseInt(req.query.local, 10) === 1;
|
data.allowLocalLogin = parseInt(meta.config.allowLocalLogin, 10) === 1 || parseInt(req.query.local, 10) === 1;
|
||||||
|
|||||||
Reference in New Issue
Block a user