this repo has no description
1use crate::auth::{extract_bearer_token_from_header, validate_bearer_token}; 2use crate::state::AppState; 3use axum::{ 4 Json, 5 extract::State, 6 http::{HeaderMap, StatusCode}, 7 response::{IntoResponse, Response}, 8}; 9use serde::Serialize; 10use serde_json::json; 11 12#[derive(Serialize)] 13#[serde(rename_all = "camelCase")] 14pub struct CheckSignupQueueOutput { 15 pub activated: bool, 16 #[serde(skip_serializing_if = "Option::is_none")] 17 pub place_in_queue: Option<i64>, 18 #[serde(skip_serializing_if = "Option::is_none")] 19 pub estimated_time_ms: Option<i64>, 20} 21 22pub async fn check_signup_queue(State(state): State<AppState>, headers: HeaderMap) -> Response { 23 if let Some(token) = 24 extract_bearer_token_from_header(headers.get("Authorization").and_then(|h| h.to_str().ok())) 25 && let Ok(user) = validate_bearer_token(&state.db, &token).await 26 && user.is_oauth { 27 return ( 28 StatusCode::FORBIDDEN, 29 Json(json!({ 30 "error": "Forbidden", 31 "message": "OAuth credentials are not supported for this endpoint" 32 })), 33 ) 34 .into_response(); 35 } 36 Json(CheckSignupQueueOutput { 37 activated: true, 38 place_in_queue: None, 39 estimated_time_ms: None, 40 }) 41 .into_response() 42}