Fix WebDAV: middleware use extensions().get() to not consume
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled

This commit is contained in:
Warren
2026-06-22 07:23:57 +08:00
parent cf57d46ca5
commit 3d395584a8
2 changed files with 9 additions and 4 deletions

View File

@@ -71,10 +71,12 @@ async fn run_webdav_server(
let dav_handler = crate::webdav::create_webdav_handler(vfs, home_dir.clone(), upload_hook, user.clone());
async fn webdav_auth_middleware(
Extension(expected): Extension<crate::webdav::WebdavCredentials>,
req: Request,
next: middleware::Next,
) -> impl IntoResponse {
// Get credentials from extensions (without consuming)
let expected = req.extensions().get::<crate::webdav::WebdavCredentials>().cloned();
let auth = req
.headers()
.get("Authorization")
@@ -90,9 +92,12 @@ async fn run_webdav_server(
Some((creds[..colon].to_string(), creds[colon + 1..].to_string()))
});
let valid = auth.is_some_and(|(u, p)| {
u == expected.username && expected.password.as_ref().is_none_or(|exp| p == *exp)
});
let valid = match (auth, expected) {
(Some((u, p)), Some(exp)) => {
u == exp.username && exp.password.as_ref().is_none_or(|exp_p| p == *exp_p)
}
_ => false,
};
if !valid {
return (