Redirect back to previous page after login

This commit is contained in:
Yukino Song
2024-09-19 04:39:44 +08:00
parent 8e8f89d514
commit ba22fa9a3e
2 changed files with 16 additions and 2 deletions

View File

@@ -142,7 +142,9 @@ namespace confighttp {
auto fg = util::fail_guard([&]() {
if (needsRedirect) {
send_redirect(response, request, "/login");
std::string redir_path = "/login?redir=.";
redir_path += request->path;
send_redirect(response, request, redir_path.c_str());
} else {
send_unauthorized(response, request);
}
@@ -247,6 +249,11 @@ namespace confighttp {
return;
}
if (config::sunshine.username.empty()) {
send_redirect(response, request, "/welcome");
return;
}
fetchStaticPage(response, request, "login.html", false);
}

View File

@@ -91,7 +91,14 @@
if (res.status === 200) {
this.success = true;
localStorage.setItem('login', JSON.stringify(this.passwordData));
location.href = './';
const url = new URL(window.location);
const redirectUrl = url.searchParams.get('redir');
const hash = url.hash;
if (redirectUrl) {
location.href = redirectUrl + hash;
} else {
location.href = './' + hash;
}
} else {
if (res.status === 401) {
throw new Error('Please check your username and password')