add session creation ts

This commit is contained in:
JMARyA 2024-12-24 13:17:01 +01:00
parent 2097bd1cca
commit d7a55f6579
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
3 changed files with 28 additions and 1 deletions

View file

@ -26,6 +26,8 @@ pub struct User {
pub password: String,
/// The role of the user
pub user_role: UserRole,
#[sqlx(default)]
pub session: String
}
#[derive(Debug, Clone, Serialize, Deserialize, sqlx::Type)]
@ -40,7 +42,14 @@ pub enum UserRole {
impl User {
// Get a user from session ID
pub async fn from_session(session: &str) -> Option<Self> {
sqlx::query_as("SELECT * FROM users WHERE username = (SELECT \"user\" FROM user_session WHERE token = $1)").bind(session).fetch_optional(get_pg!()).await.unwrap()
let user: Option<Self> = sqlx::query_as("SELECT * FROM users WHERE username = (SELECT \"user\" FROM user_session WHERE token = $1)").bind(session).fetch_optional(get_pg!()).await.unwrap();
if let Some(mut user) = user {
user.session = session.to_string();
return Some(user);
}
None
}
/// Find a user by their username