diff options
author | Kjetil Orbekk <kj@orbekk.com> | 2022-10-07 20:41:15 -0400 |
---|---|---|
committer | Kjetil Orbekk <kj@orbekk.com> | 2022-10-07 20:41:15 -0400 |
commit | 262471eeed510e36026b17e0ff1b070d88753417 (patch) | |
tree | f88b34ceb1cf5e044991ee6a574e012d2da1a0a6 | |
parent | 4ae9a69badb2356c01ee181600db444021d21e0d (diff) |
Add login redirect endpoint and link from frontend
-rw-r--r-- | server/src/main.rs | 10 | ||||
-rw-r--r-- | webapp/src/main.rs | 2 |
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! { |