summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKjetil Orbekk <kj@orbekk.com>2022-10-07 20:41:15 -0400
committerKjetil Orbekk <kj@orbekk.com>2022-10-07 20:41:15 -0400
commit262471eeed510e36026b17e0ff1b070d88753417 (patch)
treef88b34ceb1cf5e044991ee6a574e012d2da1a0a6
parent4ae9a69badb2356c01ee181600db444021d21e0d (diff)
Add login redirect endpoint and link from frontend
-rw-r--r--server/src/main.rs10
-rw-r--r--webapp/src/main.rs2
2 files changed, 6 insertions, 6 deletions
diff --git a/server/src/main.rs b/server/src/main.rs
index d2a33a5..faa895c 100644
--- a/server/src/main.rs
+++ b/server/src/main.rs
@@ -5,7 +5,7 @@ use axum::{
extract::{Extension, FromRequest, Query},
http::{request::Parts, Request},
routing::get,
- Json, Router,
+ Json, Router, response::Redirect,
};
use openidconnect::{
core::{CoreClient, CoreProviderMetadata, CoreResponseType},
@@ -70,7 +70,7 @@ async fn main() {
let app = Router::new()
.route("/api/user/info", get(user_info))
- .route("/api/get_login_url", get(get_login_url))
+ .route("/api/login", get(login))
.route(auth::LOGIN_CALLBACK, get(login_callback))
.layer(CookieManagerLayer::new())
.layer(Extension(state))
@@ -90,16 +90,16 @@ async fn login_callback(
cookies: Cookies,
Query(params): Query<HashMap<String, String>>,
) -> () {
- info!("{params:?}");
+ info!("params: {params:?}");
()
}
-async fn get_login_url(cookies: Cookies, extension: ContextExtension) -> Json<Url> {
+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:?}");
cookies.add(Cookie::new(
"user-id",
serde_json::to_string(&user_id).unwrap(),
));
- Json(auth_url)
+ Redirect::temporary(auth_url.as_str())
}
diff --git a/webapp/src/main.rs b/webapp/src/main.rs
index a3fcebc..cf7c813 100644
--- a/webapp/src/main.rs
+++ b/webapp/src/main.rs
@@ -50,7 +50,7 @@ fn home() -> Html {
Some(userinfo) => html! {
<p>{ format!("Logged in as {}", userinfo.username) }</p>
},
- None => html! { <p>{ "Not logged in" }</p> },
+ None => html! { <p><a href="/api/login">{ "Log in" }</a></p> },
};
html! {