From 315a2f9a531254f47d2f441b71a67084b97ba7d1 Mon Sep 17 00:00:00 2001 From: spinline Date: Wed, 11 Feb 2026 23:22:38 +0300 Subject: [PATCH] fix(auth): fix 500 error and server function registration on Mac --- backend/src/main.rs | 22 +++++++++++++++++++--- frontend/Cargo.toml | 2 +- shared/src/server_fns/auth.rs | 10 +++++----- vibetorrent.db-shm | Bin 0 -> 32768 bytes vibetorrent.db-wal | Bin 0 -> 86552 bytes 5 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 vibetorrent.db-shm create mode 100644 vibetorrent.db-wal diff --git a/backend/src/main.rs b/backend/src/main.rs index 11995eb..dc826df 100644 --- a/backend/src/main.rs +++ b/backend/src/main.rs @@ -52,18 +52,22 @@ async fn auth_middleware( request: Request, next: Next, ) -> Result { - // Skip auth for public paths + // Skip auth for public server functions let path = request.uri().path(); - if path.starts_with("/api/server_fns/Login") // Login server fn + if path.starts_with("/api/server_fns/Login") + || path.starts_with("/api/server_fns/login") || path.starts_with("/api/server_fns/GetSetupStatus") + || path.starts_with("/api/server_fns/get_setup_status") || path.starts_with("/api/server_fns/Setup") + || path.starts_with("/api/server_fns/setup") || path.starts_with("/swagger-ui") || path.starts_with("/api-docs") - || !path.starts_with("/api/") // Allow static files (frontend) + || !path.starts_with("/api/") { return Ok(next.run(request).await); } + // Check token if let Some(token) = jar.get("auth_token") { use jsonwebtoken::{decode, Validation, DecodingKey}; @@ -221,6 +225,18 @@ async fn main() { tracing::info!("Socket: {}", args.socket); tracing::info!("Port: {}", args.port); + // Force linking of server functions from shared crate for registration on Mac + { + use shared::server_fns::auth::*; + let _ = get_setup_status; + let _ = setup; + let _ = login; + let _ = logout; + let _ = get_user; + tracing::info!("Server functions linked successfully."); + } + + // ... rest of the main function ... // Startup Health Check let socket_path = std::path::Path::new(&args.socket); diff --git a/frontend/Cargo.toml b/frontend/Cargo.toml index 9c38e0c..21224f6 100644 --- a/frontend/Cargo.toml +++ b/frontend/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" crate-type = ["cdylib", "rlib"] [dependencies] -leptos = { version = "0.8.15", features = ["csr", "msgpack"] } +leptos = { version = "0.8.15", features = ["csr", "msgpack", "nightly"] } leptos_router = { version = "0.8.11" } console_error_panic_hook = "0.1" diff --git a/shared/src/server_fns/auth.rs b/shared/src/server_fns/auth.rs index a7d7e07..014e9eb 100644 --- a/shared/src/server_fns/auth.rs +++ b/shared/src/server_fns/auth.rs @@ -20,7 +20,7 @@ pub struct SetupStatus { pub completed: bool, } -#[server(GetSetupStatus, "/api/server_fns/GetSetupStatus", input = MsgPack, output = MsgPack)] +#[server(GetSetupStatus, "/api/server_fns", input = MsgPack, output = MsgPack)] pub async fn get_setup_status() -> Result { use crate::DbContext; @@ -33,7 +33,7 @@ pub async fn get_setup_status() -> Result { }) } -#[server(Setup, "/api/server_fns/Setup", input = MsgPack, output = MsgPack)] +#[server(Setup, "/api/server_fns", input = MsgPack, output = MsgPack)] pub async fn setup(username: String, password: String) -> Result<(), ServerFnError> { use crate::DbContext; @@ -55,7 +55,7 @@ pub async fn setup(username: String, password: String) -> Result<(), ServerFnErr Ok(()) } -#[server(Login, "/api/server_fns/Login", input = MsgPack, output = MsgPack)] +#[server(Login, "/api/server_fns", input = MsgPack, output = MsgPack)] pub async fn login(username: String, password: String) -> Result { use crate::DbContext; use leptos_axum::ResponseOptions; @@ -111,7 +111,7 @@ pub async fn login(username: String, password: String) -> Result Result<(), ServerFnError> { use leptos_axum::ResponseOptions; use cookie::{Cookie, SameSite}; @@ -132,7 +132,7 @@ pub async fn logout() -> Result<(), ServerFnError> { Ok(()) } -#[server(GetUser, "/api/server_fns/GetUser", input = MsgPack, output = MsgPack)] +#[server(GetUser, "/api/server_fns", input = MsgPack, output = MsgPack)] pub async fn get_user() -> Result, ServerFnError> { use axum::http::HeaderMap; use leptos_axum::extract; diff --git a/vibetorrent.db-shm b/vibetorrent.db-shm new file mode 100644 index 0000000000000000000000000000000000000000..acc32eee7387337e94a8f08ec3de65f24e464c57 GIT binary patch literal 32768 zcmeI)F-ikL6adgkq9z)nQ4`1!MDP&a!^#tAPGBL}<_^Id*lQ!XhefK?w)&@7SnMno z2IqbFFta=R_s=`PUwmGtCVDAN=dl?_K73r>er@jFw)2~p=d0E7@qV&?f89MT{&>Er zo$G$LqWwItQi&+uJMR%w<0$mC8W3tLPP0~eIKTwxIu>ymbDRfe7cN!zmrNA)F zx-73Yfr14_DbJ%51Zot>^AZJtItB8iP(h$hfzvv#?bZZBU`l~NwE}0=-rU6roFgDW mfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009F3R^SICBq?zK literal 0 HcmV?d00001 diff --git a/vibetorrent.db-wal b/vibetorrent.db-wal new file mode 100644 index 0000000000000000000000000000000000000000..796a6deba39126abd27af54d1b577d3686fce7c9 GIT binary patch literal 86552 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 VKmY;|fB*!VOJIXVbQr@7{|5Lh{V4zd literal 0 HcmV?d00001