Add a noauto query param to login

This commit is contained in:
QuantumEntangledAndy
2024-10-07 09:17:43 +07:00
parent 329469021e
commit 1cda7003d1
3 changed files with 27 additions and 10 deletions

View File

@ -180,7 +180,13 @@ function displayError(message) {
* Preserves the query string. * Preserves the query string.
*/ */
function redirectToHome() { function redirectToHome() {
window.location.href = '/' + window.location.search; // After a login theres no need to preserve the
// noauto (if present)
const urlParams = new URLSearchParams(window.location.search);
urlParams.delete('noauto');
window.location.href = '/' + urlParams.toString();
} }
/** /**

View File

@ -848,7 +848,14 @@ async function logout() {
headers: getRequestHeaders(), headers: getRequestHeaders(),
}); });
window.location.reload(); // On an explicit logout stop auto login
// to allow user to change username even
// when auto auth (such as authelia or basic)
// would be valid
const urlParams = new URLSearchParams(window.location.search);
urlParams.set('noauto', 'true');
window.location.search = urlParams.toString();
} }
/** /**

View File

@ -569,6 +569,7 @@ function shouldRedirectToLogin(request) {
/** /**
* Tries auto-login if there is only one user and it's not password protected. * Tries auto-login if there is only one user and it's not password protected.
* or another configured method such authlia or basic
* @param {import('express').Request} request Request object * @param {import('express').Request} request Request object
* @returns {Promise<boolean>} Whether auto-login was performed * @returns {Promise<boolean>} Whether auto-login was performed
*/ */
@ -577,6 +578,8 @@ async function tryAutoLogin(request) {
return false; return false;
} }
console.warn(request.session.noauto);
if (!request.query.noauto) {
if (await singleUserLogin(request)) { if (await singleUserLogin(request)) {
return true; return true;
} }
@ -588,6 +591,7 @@ async function tryAutoLogin(request) {
if (PERUSER_BASIC_AUTH && await basicUserLogin(request)) { if (PERUSER_BASIC_AUTH && await basicUserLogin(request)) {
return true; return true;
} }
}
return false; return false;
} }