kych

OAuth 2.0 API for Swiyu to enable Taler integration of Swiyu for KYC (experimental)
Log | Files | Refs

commit 2eaed97d77e4f1341daaadf4cfe3e66935b84e0e
parent 0780ea77a0f829e99a2c92b25c5bc4a67df9fca1
Author: Henrique Chan Carvalho Machado <henriqueccmachado@tecnico.ulisboa.pt>
Date:   Sun,  7 Dec 2025 17:06:18 +0100

oauth2_gateway: revert /authorize status check

Diffstat:
Moauth2_gateway/src/handlers.rs | 75++++-----------------------------------------------------------------------
Moauth2_gateway/src/models.rs | 3---
2 files changed, 4 insertions(+), 74 deletions(-)

diff --git a/oauth2_gateway/src/handlers.rs b/oauth2_gateway/src/handlers.rs @@ -171,11 +171,11 @@ pub async fn authorize( )); } - // Check status for idempotency and completion + // Check status for idempotency match data.status { SessionStatus::Authorized => { tracing::info!( - "Session {} already authorized, returning pending status", + "Session {} already authorized, returning cached response", data.session_id ); @@ -187,75 +187,10 @@ pub async fn authorize( return Ok(( StatusCode::OK, Json(AuthorizeResponse { - status: "pending".to_string(), verification_id, verification_url: data.verification_url.clone().unwrap_or_default(), verification_deeplink: data.verification_deeplink, - state: params.state.clone(), - redirect_uri: None, - }), - )); - } - - SessionStatus::Verified => { - tracing::info!( - "Session {} verified, returning redirect URI", - data.session_id - ); - - let verification_id = data - .request_id - .and_then(|id| uuid::Uuid::parse_str(&id).ok()) - .unwrap_or(uuid::Uuid::nil()); - - let auth_code = crate::db::authorization_codes::get_code_by_session(&state.pool, data.session_id) - .await - .map_err(|e| { - tracing::error!("Failed to get authorization code: {}", e); - (StatusCode::INTERNAL_SERVER_ERROR, Json(ErrorResponse::new("internal_error"))) - })?; - - let redirect_url = match auth_code { - Some(code) => { - let separator = if params.redirect_uri.contains('?') { "&" } else { "?" }; - format!("{}{}code={}&state={}", params.redirect_uri, separator, code, params.state) - } - None => { - tracing::error!("No authorization code found for verified session"); - return Err((StatusCode::INTERNAL_SERVER_ERROR, Json(ErrorResponse::new("internal_error")))); - } - }; - - return Ok(( - StatusCode::OK, - Json(AuthorizeResponse { - status: "completed".to_string(), - verification_id, - verification_url: data.verification_url.clone().unwrap_or_default(), - verification_deeplink: data.verification_deeplink, - state: params.state.clone(), - redirect_uri: Some(redirect_url), - }), - )); - } - - SessionStatus::Failed => { - tracing::warn!("Session {} failed", data.session_id); - - let verification_id = data - .request_id - .and_then(|id| uuid::Uuid::parse_str(&id).ok()) - .unwrap_or(uuid::Uuid::nil()); - - return Ok(( - StatusCode::OK, - Json(AuthorizeResponse { - status: "failed".to_string(), - verification_id, - verification_url: data.verification_url.clone().unwrap_or_default(), - verification_deeplink: data.verification_deeplink, - state: params.state.clone(), - redirect_uri: None, + state: params.state.clone() }), )); } @@ -359,12 +294,10 @@ pub async fn authorize( Ok(( StatusCode::OK, Json(AuthorizeResponse { - status: "pending".to_string(), verification_id: swiyu_response.id, verification_url: result.verification_url, verification_deeplink: swiyu_response.verification_deeplink, - state: params.state.clone(), - redirect_uri: None, + state: params.state.clone() }), )) } diff --git a/oauth2_gateway/src/models.rs b/oauth2_gateway/src/models.rs @@ -17,15 +17,12 @@ pub struct AuthorizeQuery { #[derive(Debug, Deserialize, Serialize)] pub struct AuthorizeResponse { - pub status: String, #[serde(rename = "verificationId")] pub verification_id: Uuid, pub verification_url: String, #[serde(skip_serializing_if = "Option::is_none")] pub verification_deeplink: Option<String>, pub state: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub redirect_uri: Option<String>, } // Token endpoint