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:
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