From 427612b11fd3918f29ba646ccc681edea536346d Mon Sep 17 00:00:00 2001 From: Fu Zi Xiang Date: Tue, 10 Oct 2023 13:02:41 +0800 Subject: [PATCH] feat: added logout --- admin_frontend/src/main.rs | 9 ++- admin_frontend/src/templates.rs | 4 + admin_frontend/src/web_app.rs | 20 ++--- admin_frontend/templates/home.html | 20 +++++ admin_frontend/templates/login.html | 109 ++++++++++++++-------------- 5 files changed, 90 insertions(+), 72 deletions(-) create mode 100644 admin_frontend/templates/home.html diff --git a/admin_frontend/src/main.rs b/admin_frontend/src/main.rs index 5737cf8e..c7136eca 100644 --- a/admin_frontend/src/main.rs +++ b/admin_frontend/src/main.rs @@ -5,7 +5,7 @@ mod templates; mod web_api; mod web_app; -use axum::Router; +use axum::{response::Redirect, routing::get, Router}; #[tokio::main] async fn main() { @@ -19,12 +19,13 @@ async fn main() { let state = AppState { gotrue_client }; - let web_api_router = web_api::router().with_state(state.clone()); let web_app_router = web_app::router(); + let web_api_router = web_api::router().with_state(state); let app = Router::new() - .nest_service("/web-api", web_api_router) - .nest_service("/", web_app_router); + .route("/", get(|| async { Redirect::permanent("/web") })) + .nest_service("/web", web_app_router) + .nest_service("/web-api", web_api_router); axum::Server::bind(&"0.0.0.0:3000".parse().unwrap()) .serve(app.into_make_service()) diff --git a/admin_frontend/src/templates.rs b/admin_frontend/src/templates.rs index ca9fd771..b905d8a7 100644 --- a/admin_frontend/src/templates.rs +++ b/admin_frontend/src/templates.rs @@ -3,3 +3,7 @@ use askama::Template; #[derive(Template)] #[template(path = "login.html")] pub struct Login; + +#[derive(Template)] +#[template(path = "home.html")] +pub struct Home; diff --git a/admin_frontend/src/web_app.rs b/admin_frontend/src/web_app.rs index 005d068f..9b0f210d 100644 --- a/admin_frontend/src/web_app.rs +++ b/admin_frontend/src/web_app.rs @@ -2,7 +2,7 @@ use crate::error::RenderError; use askama::Template; use axum::response::Result; use axum::{response::Html, routing::get, Router}; -use axum_extra::extract::cookie::{Cookie, CookieJar}; +use axum_extra::extract::cookie::CookieJar; use crate::templates; @@ -11,17 +11,15 @@ pub fn router() -> Router { .route("/", get(home_handler)) .route("/home", get(home_handler)) .route("/login", get(login_handler)) - - // for testing and debugging - .route("/setcookie", get(set_cookie_handler)) - .route("/resetcookie", get(reset_cookie_handler)) } pub async fn home_handler(cookies: CookieJar) -> Result, RenderError> { - println!("cookies: {:?}", cookies); let access_token = cookies.get("access_token"); match access_token { - Some(access_token) => Ok(Html(access_token.to_string())), // TODO: render home page + Some(access_token) => { + let s = templates::Home {}.render()?; + Ok(Html(s)) + }, None => login_handler().await, } } @@ -30,11 +28,3 @@ pub async fn login_handler() -> Result, RenderError> { let s = templates::Login {}.render()?; Ok(Html(s)) } - -pub async fn set_cookie_handler(jar: CookieJar) -> CookieJar { - jar.add(Cookie::new("access_token", "test")) -} - -pub async fn reset_cookie_handler(jar: CookieJar) -> CookieJar { - jar.remove(Cookie::new("access_token", "")) -} diff --git a/admin_frontend/templates/home.html b/admin_frontend/templates/home.html new file mode 100644 index 00000000..9239ee1f --- /dev/null +++ b/admin_frontend/templates/home.html @@ -0,0 +1,20 @@ + + + +

Welcome to the Home Page

+ + + + + diff --git a/admin_frontend/templates/login.html b/admin_frontend/templates/login.html index 3bb00d22..ddb433c7 100644 --- a/admin_frontend/templates/login.html +++ b/admin_frontend/templates/login.html @@ -1,62 +1,65 @@ + - - +

Admin Login

- - - - - - - - - -
- - - -
- - - -
- + + + + + + + + + +
+ + + +
+ + + +
+
- - +