summaryrefslogtreecommitdiff
path: root/server/src/main.rs
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-10-07 21:31:21 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-10-07 21:31:21 -0400
commitba57f14611b3a35bc08f01050779f1b4c9fc6090 (patch)
tree78fd8eda7686210d58c26054408e94279a5a08a0 /server/src/main.rs
parent262471eeed510e36026b17e0ff1b070d88753417 (diff)
Add url encoded cookie
Diffstat (limited to 'server/src/main.rs')
-rw-r--r--server/src/main.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/server/src/main.rs b/server/src/main.rs
index faa895c..d948586 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -1,11 +1,12 @@
-use std::{env, sync::Arc, collections::HashMap};
+use std::{collections::HashMap, env, sync::Arc};
use axum::{
body::Body,
extract::{Extension, FromRequest, Query},
http::{request::Parts, Request},
+ response::Redirect,
routing::get,
- Json, Router, response::Redirect,
+ Json, Router,
};
use openidconnect::{
core::{CoreClient, CoreProviderMetadata, CoreResponseType},
@@ -17,10 +18,10 @@ use openidconnect::{
use protocol::UserInfo;
use tower_cookies::{Cookie, CookieManagerLayer, Cookies};
use tower_http::trace::TraceLayer;
-use tracing::{info, trace};
+use tracing::{debug, info, trace};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
mod auth;
-use crate::auth::Authenticator;
+use crate::auth::{Authenticator, EndUserId};
struct ServerContext {
pub app_url: String,
@@ -89,17 +90,24 @@ async fn user_info() -> Json<Option<UserInfo>> {
async fn login_callback(
cookies: Cookies,
Query(params): Query<HashMap<String, String>>,
+ extension: ContextExtension,
) -> () {
+ let cookie = cookies.get("user-id").unwrap();
+ let user_id: EndUserId =
+ serde_json::from_str(&urlencoding::decode(cookie.value()).unwrap()).unwrap();
+ info!("cookie: {cookie:?}");
info!("params: {params:?}");
+ extension.authenticator.authenticate(user_id, params).await;
()
}
async fn login(cookies: Cookies, extension: ContextExtension) -> Redirect {
let (user_id, auth_url) = extension.authenticator.get_login_url().await;
- trace!("Creating auth url for {user_id:?}");
+ info!("Creating auth url for {user_id:?}");
+ let user_id = serde_json::to_string(&user_id).unwrap();
cookies.add(Cookie::new(
"user-id",
- serde_json::to_string(&user_id).unwrap(),
+ urlencoding::encode(&user_id).to_string(),
));
Redirect::temporary(auth_url.as_str())
}