diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-10-07 19:11:24 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-10-07 19:11:24 -0400 |
commit | 4ae9a69badb2356c01ee181600db444021d21e0d (patch) | |
tree | 8609cc9ed351ef2825568a6388316bf91294ff22 /server | |
parent | c64a7a640ac8c59eb6339f0a06d2ad2efab3fd11 (diff) |
Downgrade to stable axum to use tower-cookies
Diffstat (limited to 'server')
-rw-r--r-- | server/Cargo.toml | 2 | ||||
-rw-r--r-- | server/src/main.rs | 37 |
2 files changed, 25 insertions, 14 deletions
diff --git a/server/Cargo.toml b/server/Cargo.toml index f25aa4c..41d3081 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -axum = "0.6.0-rc.2" +axum = "0.5" dotenv = "0.15.0" serde = { version = "1.0.145", features = ["derive"] } serde_json = "1.0.85" diff --git a/server/src/main.rs b/server/src/main.rs index 994c291..d2a33a5 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -1,15 +1,22 @@ -use std::{env, sync::Arc}; +use std::{env, sync::Arc, collections::HashMap}; -use axum::{extract::{FromRequest, Extension}, routing::get, Json, Router, http::{Request, request::Parts}, body::Body}; +use axum::{ + body::Body, + extract::{Extension, FromRequest, Query}, + http::{request::Parts, Request}, + routing::get, + Json, Router, +}; use openidconnect::{ core::{CoreClient, CoreProviderMetadata, CoreResponseType}, reqwest::async_http_client, + url::Url, AccessTokenHash, AuthenticationFlow, AuthorizationCode, ClientId, ClientSecret, CsrfToken, - IssuerUrl, Nonce, OAuth2TokenResponse, PkceCodeChallenge, RedirectUrl, Scope, TokenResponse, url::Url, + IssuerUrl, Nonce, OAuth2TokenResponse, PkceCodeChallenge, RedirectUrl, Scope, TokenResponse, }; use protocol::UserInfo; -use tower_http::trace::TraceLayer; use tower_cookies::{Cookie, CookieManagerLayer, Cookies}; +use tower_http::trace::TraceLayer; use tracing::{info, trace}; use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt}; mod auth; @@ -35,9 +42,7 @@ async fn keycloak_client( let client = CoreClient::from_provider_metadata(provider_metadata, client_id, Some(client_secret)) // Set the URL the user will be redirected to after the authorization process. - .set_redirect_uri( - redirect_uri - ); + .set_redirect_uri(redirect_uri); client } @@ -60,7 +65,7 @@ async fn main() { let state = Arc::new(ServerContext { app_url: app_url, - authenticator: Authenticator::from_env().await, + authenticator: Authenticator::from_env().await, }); let app = Router::new() @@ -81,14 +86,20 @@ async fn user_info() -> Json<Option<UserInfo>> { Json(None) } -async fn login_callback(mut req: Parts) -> &'static str { - info!("{req:?}"); - "hello" +async fn login_callback( + cookies: Cookies, + Query(params): Query<HashMap<String, String>>, +) -> () { + info!("{params:?}"); + () } -async fn get_login_url(extension: ContextExtension) -> Json<Url> { +async fn get_login_url(cookies: Cookies, extension: ContextExtension) -> Json<Url> { let (user_id, auth_url) = extension.authenticator.get_login_url().await; trace!("Creating auth url for {user_id:?}"); - // cookies.add(Cookie::new("user-id", serde_json::to_string(user_id))); + cookies.add(Cookie::new( + "user-id", + serde_json::to_string(&user_id).unwrap(), + )); Json(auth_url) } |