From 152c01124b01b1ef30326aca1cb7b6a721daf7fa Mon Sep 17 00:00:00 2001 From: Lucas Vas Date: Wed, 1 Apr 2026 13:50:31 -0400 Subject: [PATCH] feat: improve error logging when JSON does not parse --- src/pages/api/tokens.rs | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/src/pages/api/tokens.rs b/src/pages/api/tokens.rs index efaa12b..e71db7e 100644 --- a/src/pages/api/tokens.rs +++ b/src/pages/api/tokens.rs @@ -1,19 +1,16 @@ -#[cfg(feature = "ssr")] -use jsonwebtoken::{jwk::JwkSet, DecodingKey}; +use crate::common::UserClaims; +#[cfg(feature = "ssr")] +use jsonwebtoken::{DecodingKey, jwk::JwkSet}; use leptos::prelude::*; -use crate::common::UserClaims; #[cfg(feature = "ssr")] pub async fn fetch_jwks(user_pool_id: String, region: String) -> Result { let request_url = format!( "https://cognito-idp.{}.amazonaws.com/{}/.well-known/jwks.json", - region, - user_pool_id + region, user_pool_id ); - let jwks = reqwest::get(&request_url).await? - .json::() - .await?; + let jwks = reqwest::get(&request_url).await?.json::().await?; Ok(jwks) } @@ -21,7 +18,7 @@ pub async fn fetch_jwks(user_pool_id: String, region: String) -> Result Result { - use jsonwebtoken::{decode, Algorithm, Validation}; + use jsonwebtoken::{Algorithm, Validation, decode}; let jwks = fetch_jwks("us-east-1_Lfjuy5zaM".into(), "us-east-1".into()).await?; @@ -31,16 +28,18 @@ pub async fn validate_and_get_token_info(token: String) -> Result( - &token, - &DecodingKey::from_jwk(&jwk)?, - &validation - ).map_err(|_| ServerFnError::new("Invalid token found".to_string()))?; + leptos::logging::debug_log!("Parsing token: {:?}", token); + + let token_data = decode::(&token, &DecodingKey::from_jwk(&jwk)?, &validation) + .map_err(|err| ServerFnError::new(format!("Invalid token found: {err}")))?; if token_data.claims.token_use != "access" { return Err(ServerFnError::new("Token type mismatch"));