use axum::{extract::State, response::Response, routing::get, Router}; use axum_extra::extract::CookieJar; use maud::html; use tap::Pipe; use crate::server::{store::Store, Nevermind}; use super::{account_auth, render_html, ApiState}; pub fn bind(app: Router) -> Router { app.route("/", get(get_panel)) } #[axum::debug_handler(state = ApiState)] async fn get_panel(jar: CookieJar, State(store): State) -> Result { Ok(account_auth(&jar, &store) .await .prompt_login()? .pipe(render_normal_panel)) } fn render_normal_panel(name: String) -> Response { render_html( html!(title { "dissociate" }), html! { p { "currently logged in as " (name) } a href="/logout" { button { "log out" } } }, ) }