diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-12-23 07:37:08 -0500 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-12-23 07:37:08 -0500 |
commit | 38f4ef0073c43e478e14c3dd0cc28943b360f013 (patch) | |
tree | 17c456acd9a9b5898a9a7b728d14a38932d69a80 /server/src/auth.rs | |
parent | eae8b9b7a40c3f2a52f319e695b280a41618fdd8 (diff) |
Use new type safe state handling from axum 0.6
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())? { |