diff options
Diffstat (limited to 'server/src/auth.rs')
-rw-r--r-- | server/src/auth.rs | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/server/src/auth.rs b/server/src/auth.rs index d0f6c38..a924f44 100644 --- a/server/src/auth.rs +++ b/server/src/auth.rs @@ -6,10 +6,10 @@ use std::{ sync::{Arc, Mutex}, }; -use crate::{error::BridgeError, server::ContextExtension}; +use crate::{error::BridgeError, server::{ServerState, ServerContext}}; use async_trait::async_trait; use axum::{ - extract::{FromRequest, FromRequestParts}, + extract::{FromRequestParts, State, FromRef}, response::{IntoResponse, Response}, http::request::Parts, }; use chrono::{DateTime, Utc}; @@ -368,21 +368,20 @@ pub async fn fetch_authenticated_session( } #[async_trait] -impl<B> FromRequestParts<B> for AuthenticatedSession +impl<S> FromRequestParts<S> for AuthenticatedSession where - B: Send + Sync, + S: Send + Sync, + Arc<ServerContext>: FromRef<S> { type Rejection = Response; async fn from_request_parts( - parts: &mut Parts, state: &B + parts: &mut Parts, state: &S ) -> Result<Self, Self::Rejection> { let cookies = Cookies::from_request_parts(parts, state) .await .map_err(|e| e.into_response())?; - let extension = ContextExtension::from_request_parts(parts, state) - .await - .map_err(|e| e.into_response())?; + let state = Arc::<ServerContext>::from_ref(state); let cookie = match cookies.get("user-id") { None => return Err(BridgeError::NotLoggedIn.into_response()), Some(v) => v, @@ -396,7 +395,7 @@ where } Ok(s) => s, }; - let session = match crate::auth::fetch_authenticated_session(&extension.db, &session_id) + let session = match crate::auth::fetch_authenticated_session(&state.db, &session_id) .await .map_err(|e| e.into_response())? { |