From 130669793dfb77b286a26a373378b4d1f2be837c Mon Sep 17 00:00:00 2001 From: Ashelyn Rose Date: Sat, 26 Oct 2024 02:20:32 -0400 Subject: Very basic rocket db state and session lookup (with hardcoded session id) --- src/api/guards/mod.rs | 1 + src/api/guards/session.rs | 25 +++++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 src/api/guards/mod.rs create mode 100644 src/api/guards/session.rs (limited to 'src/api/guards') diff --git a/src/api/guards/mod.rs b/src/api/guards/mod.rs new file mode 100644 index 0000000..f52f1c4 --- /dev/null +++ b/src/api/guards/mod.rs @@ -0,0 +1 @@ +pub mod session; diff --git a/src/api/guards/session.rs b/src/api/guards/session.rs new file mode 100644 index 0000000..ccd40a2 --- /dev/null +++ b/src/api/guards/session.rs @@ -0,0 +1,25 @@ +use std::str::FromStr; + +use rocket::{http::Status, outcome::Outcome, request::{self, Request, FromRequest}}; +use sqlx::PgPool; +use uuid::Uuid; +use crate::db::models::auth::LoginSession; + + +#[rocket::async_trait] +impl<'r> FromRequest<'r> for LoginSession { + type Error = (); + + async fn from_request(req: &'r Request<'_>) -> request::Outcome { + // At the moment just always look up this one for initial testing + let hardcoded_uuid = "557621dd-b98e-409a-9ce7-25b5004caa42"; + + if let Some(db) = req.rocket().state::() { + if let Some(session) = LoginSession::lookup(&db, Uuid::from_str(hardcoded_uuid).unwrap()).await { + return Outcome::Success(session); + } + } + + Outcome::Error((Status::InternalServerError, ())) + } +} -- cgit 1.4.1