| ... | ... | @@ -325,9 +325,12 @@ async fn exchange( |
| 325 | 325 | })?; |
| 326 | 326 | return Ok((id.to_string(), login.to_owned())); |
| 327 | 327 | } |
| 328 | let mut form = form.to_vec(); |
| 329 | form.push(("state", "none")); |
| 328 | 330 | let token = json_bytes( |
| 329 | 331 | &response_bytes( |
| 330 | 332 | http.post(format!("{ASTHENO}/api/token")) |
| 333 | .basic_auth(client, Some(secret)) |
| 331 | 334 | .form(&form) |
| 332 | 335 | .send() |
| 333 | 336 | .await?, |
| ... | ... | @@ -557,8 +560,17 @@ async fn handle(app: &App, request: Request) -> Result<Response> { |
| 557 | 560 | headers |
| 558 | 561 | }) |
| 559 | 562 | .build()?; |
| 560 | | let (subject, name) = |
| 561 | | exchange(&http, provider, &client, &secret, code, &callback, &flow).await?; |
| 563 | let (subject, name) = exchange(&http, provider, &client, &secret, code, &callback, &flow) |
| 564 | .await |
| 565 | .map_err(|error| { |
| 566 | eprintln!( |
| 567 | "guest rejected code: {provider} length {} whitespace {} dots {}", |
| 568 | code.len(), |
| 569 | code.bytes().any(|c| c.is_ascii_whitespace()), |
| 570 | code.bytes().filter(|c| *c == b'.').count() |
| 571 | ); |
| 572 | error |
| 573 | })?; |
| 562 | 574 | let id = account(auth, provider, &subject, &name)?; |
| 563 | 575 | auth.create_session(&id, "dashboard", headers, None) |
| 564 | 576 | } |