fix: login btn does not work for readonly annoymous

pull/620/head
sigoden 2025-08-19 08:42:48 +08:00
parent f8a7873582
commit 0a8b66aee3
2 changed files with 16 additions and 4 deletions

View File

@ -534,7 +534,7 @@ async function setupAuth() {
$loginBtn.classList.remove("hidden");
$loginBtn.addEventListener("click", async () => {
try {
await checkAuth();
await checkAuth("login");
} catch { }
location.reload();
});
@ -782,9 +782,10 @@ async function saveChange() {
}
}
async function checkAuth() {
async function checkAuth(variant) {
if (!DATA.auth) return;
const res = await fetch(baseUrl(), {
const qs = variant ? `?${variant}` : "";
const res = await fetch(baseUrl() + qs, {
method: "CHECKAUTH",
});
await assertResOK(res);

View File

@ -211,7 +211,18 @@ impl Server {
}
if method.as_str() == "CHECKAUTH" {
*res.body_mut() = body_full(user.clone().unwrap_or_default());
match user.clone() {
Some(user) => {
*res.body_mut() = body_full(user);
}
None => {
if has_query_flag(&query_params, "login") || !access_paths.perm().readwrite() {
self.auth_reject(&mut res)?
} else {
*res.body_mut() = body_full("");
}
}
}
return Ok(res);
} else if method.as_str() == "LOGOUT" {
self.auth_reject(&mut res)?;