From 0cbc223b4e3aee072825c83c2370c72f961b7e99 Mon Sep 17 00:00:00 2001 From: GW_MC <72297530+GWMCwing@users.noreply.github.com> Date: Mon, 29 Dec 2025 18:44:52 +0800 Subject: [PATCH] feat: implement AuthenticatedRequestInfo for user authentication handling --- apps/api/src/middlewares/request_info.rs | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/apps/api/src/middlewares/request_info.rs b/apps/api/src/middlewares/request_info.rs index fb44b20..aec8c53 100644 --- a/apps/api/src/middlewares/request_info.rs +++ b/apps/api/src/middlewares/request_info.rs @@ -1,6 +1,31 @@ +use axum::{extract::FromRequestParts, http::StatusCode}; use uuid::Uuid; #[derive(Clone, Debug)] pub struct RequestInfo { pub user_id: Option, } + +pub struct AuthenticatedRequestInfo { + pub user_id: Uuid, +} + +impl FromRequestParts<()> for AuthenticatedRequestInfo { + type Rejection = StatusCode; + + async fn from_request_parts( + parts: &mut axum::http::request::Parts, + _state: &(), + ) -> Result { + let request_info = parts + .extensions + .get::() + .ok_or(StatusCode::UNAUTHORIZED)?; + + if let Some(user_id) = request_info.user_id { + Ok(AuthenticatedRequestInfo { user_id }) + } else { + Err(StatusCode::UNAUTHORIZED) + } + } +}