mirror of
https://codeberg.org/demostf/frontend.git
synced 2026-06-03 18:24:12 +02:00
fix session deserialize
This commit is contained in:
parent
7a9f6caede
commit
b36f989a23
4 changed files with 42 additions and 32 deletions
|
|
@ -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};
|
||||
|
|
@ -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)),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ use tracing::debug;
|
|||
|
||||
pub const COOKIE_NAME: &str = "tf_session";
|
||||
|
||||
#[derive(Debug)]
|
||||
pub enum SessionData {
|
||||
Authenticated(User),
|
||||
UnAuthenticated,
|
||||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue