Skip to content

Commit

Permalink
fix session deserialize
Browse files Browse the repository at this point in the history
  • Loading branch information
icewind1991 committed Nov 26, 2023
1 parent 7a9f6ca commit b36f989
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 32 deletions.
52 changes: 26 additions & 26 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 13 additions & 3 deletions src/data/steam_id.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use maud::Render;
use sea_query::Value;
use serde::{Deserialize, Deserializer, Serialize};
use serde::{de::Error, Deserialize, Deserializer, Serialize};
use sqlx::database::HasValueRef;
use sqlx::error::BoxDynError;
use sqlx::{Database, Decode, Type};
Expand Down Expand Up @@ -89,13 +89,23 @@ where
}
}

#[derive(Deserialize)]
#[serde(untagged)]
enum RawSteamId<'a> {
String(&'a str),
Num(u64),
}

impl<'de> Deserialize<'de> for SteamId {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let str = <&str as Deserialize>::deserialize(deserializer)?;
Ok(str.parse().unwrap())
let raw = RawSteamId::deserialize(deserializer)?;
match raw {
RawSteamId::String(str) => str.parse().map_err(D::Error::custom),
RawSteamId::Num(num) => Ok(SteamId::Id(num)),
}
}
}

Expand Down
1 change: 1 addition & 0 deletions src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,7 @@ async fn login_callback(
error!("{e:?}");
Error::SteamAuth
})?;
info!(steam_id, "received steam login callback");
let steam_id = SteamId::new(steam_id);
let user = User::get(&app.connection, steam_id).await?;
let mut session = Session::new();
Expand Down
5 changes: 2 additions & 3 deletions src/session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ use tracing::debug;

pub const COOKIE_NAME: &str = "tf_session";

#[derive(Debug)]
pub enum SessionData {
Authenticated(User),
UnAuthenticated,
Expand Down Expand Up @@ -58,9 +59,7 @@ where
session_cookie.unwrap()
);
// continue to decode the session cookie
let Ok(Some(session)) = store
.load_session(session_cookie.unwrap().to_owned())
.await else {
let Ok(Some(session)) = store.load_session(session_cookie.unwrap().to_owned()).await else {
return Ok(Self::UnAuthenticated);
};
let Some(user) = session.get::<User>("user") else {
Expand Down

0 comments on commit b36f989

Please sign in to comment.