summaryrefslogtreecommitdiff
path: root/server/src/auth.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-12-23 07:37:08 -0500
committerKjetil Orbekk <kj@orbekk.com>2022-12-23 07:37:08 -0500
commit38f4ef0073c43e478e14c3dd0cc28943b360f013 (patch)
tree17c456acd9a9b5898a9a7b728d14a38932d69a80 /server/src/auth.rs
parenteae8b9b7a40c3f2a52f319e695b280a41618fdd8 (diff)
Use new type safe state handling from axum 0.6
Diffstat (limited to 'server/src/auth.rs')
-rw-r--r--server/src/auth.rs17
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())?
{