validate-claims-fix

This commit is contained in:
Untone 2023-12-13 18:35:44 +03:00
parent 7e0e1d60f4
commit 3958ae1062

View File

@ -9,45 +9,35 @@ use crate::SSEMessageData;
pub async fn get_auth_id(token: &str) -> Result<i32, Box<dyn Error>> {
let auth_api_base = env::var("AUTH_URL")?;
let query_name = "validate_jwt_token";
let operation = "ValidateToken";
let mut headers = HeaderMap::new();
// headers.insert(AUTHORIZATION, HeaderValue::from_str(token)?);
headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/json"));
let mut variables = HashMap::<String, String>::new();
variables.insert("token".to_string(), token.to_string());
variables.insert("token_type".to_string(), "access_token".to_string());
let gql = json!({
"query": r#"query {
validate_jwt_token(params: ValidateJWTTokenInput) {
is_valid
claims
}
}"#,
"variables": {
"params": {
"token_type": "access_token",
"token": token,
}
}
"query": format!("query {}($params: ValidateJWTTokenInput) {{ {}(params: $params) {{ is_valid claims }} }}", operation, query_name),
"operationName": operation,
"variables": variables
});
println!("GraphQL Request: {:?}", gql);
let client = HTTPClient::new();
let response = client
.post(&auth_api_base)
.headers(headers)
.json(&gql)
.send()
.await;
let response = match response {
Ok(res) => res,
Err(err) => {
println!("Error sending request: {:?}", err);
return Err(Box::new(err));
}
};
.await?;
if response.status().is_success() {
let r: HashMap<String, serde_json::Value> = response.json().await?;
let user_id = r
.get("data")
.and_then(|data| data.get("validate_jwt_token"))
.and_then(|data| data.get(query_name))
.and_then(|query| query.get("claims"))
.and_then(|claims| claims.get("sub"))
.and_then(|id| id.as_i64());