diff --git a/src/model/user.rs b/src/model/user.rs index 4918030..f46ba6e 100644 --- a/src/model/user.rs +++ b/src/model/user.rs @@ -203,15 +203,13 @@ impl<'r> FromRequest<'r> for CoxUser { type Error = LoginError; async fn from_request(req: &'r Request<'_>) -> request::Outcome { - match req.cookies().get_private("loggedin_user") { - Some(user) => { - let user: User = serde_json::from_str(user.value()).unwrap(); //TODO: fixme - match user.try_into() { - Ok(user) => Outcome::Success(user), - Err(_) => Outcome::Failure((Status::Unauthorized, LoginError::NotAnAdmin)), - } - } - None => Outcome::Failure((Status::Unauthorized, LoginError::NotLoggedIn)), + match User::from_request(req).await { + Outcome::Success(user) => match user.try_into() { + Ok(user) => Outcome::Success(user), + Err(_) => Outcome::Failure((Status::Unauthorized, LoginError::NotACox)), + }, + Outcome::Failure(f) => Outcome::Failure(f), + Outcome::Forward(f) => Outcome::Forward(f), } } } @@ -238,15 +236,13 @@ impl<'r> FromRequest<'r> for AdminUser { type Error = LoginError; async fn from_request(req: &'r Request<'_>) -> request::Outcome { - match req.cookies().get_private("loggedin_user") { - Some(user) => { - let user: User = serde_json::from_str(user.value()).unwrap(); //TODO: fixme - match user.try_into() { - Ok(user) => Outcome::Success(user), - Err(_) => Outcome::Failure((Status::Unauthorized, LoginError::NotAnAdmin)), - } - } - None => Outcome::Failure((Status::Unauthorized, LoginError::NotLoggedIn)), + match User::from_request(req).await { + Outcome::Success(user) => match user.try_into() { + Ok(user) => Outcome::Success(user), + Err(_) => Outcome::Failure((Status::Unauthorized, LoginError::NotAnAdmin)), + }, + Outcome::Failure(f) => Outcome::Failure(f), + Outcome::Forward(f) => Outcome::Forward(f), } } }