From 3b208c0103c9107b4f14e539049316ee46f4cf24 Mon Sep 17 00:00:00 2001 From: Pierre HUBERT Date: Wed, 22 Jan 2025 20:56:35 +0100 Subject: [PATCH] Build base web page --- Cargo.lock | 85 +++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 3 +- assets/favicon.png | Bin 0 -> 4710 bytes src/server/web_ui.rs | 9 ++++- templates/index.html | 11 ++++++ 5 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 assets/favicon.png create mode 100644 templates/index.html diff --git a/Cargo.lock b/Cargo.lock index 4c63ab4..0594301 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -352,6 +352,50 @@ version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69f7f8c3906b62b754cd5326047894316021dcfe5a194c8ea52bdd94934a3457" +[[package]] +name = "askama" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b79091df18a97caea757e28cd2d5fda49c6cd4bd01ddffd7ff01ace0c0ad2c28" +dependencies = [ + "askama_derive", + "askama_escape", + "humansize", + "num-traits", + "percent-encoding", +] + +[[package]] +name = "askama_derive" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19fe8d6cb13c4714962c072ea496f3392015f0989b1a2847bb4b2d9effd71d83" +dependencies = [ + "askama_parser", + "basic-toml", + "mime", + "mime_guess", + "proc-macro2", + "quote", + "serde", + "syn", +] + +[[package]] +name = "askama_escape" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" + +[[package]] +name = "askama_parser" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acb1161c6b64d1c3d83108213c2a2533a342ac225aabd0bda218278c2ddb00c0" +dependencies = [ + "nom", +] + [[package]] name = "async-trait" version = "0.1.85" @@ -442,6 +486,15 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "basic-toml" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "823388e228f614e9558c6804262db37960ec8821856535f5c3f59913140558f8" +dependencies = [ + "serde", +] + [[package]] name = "bitflags" version = "2.8.0" @@ -1174,6 +1227,15 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" +[[package]] +name = "humansize" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + [[package]] name = "humantime" version = "2.1.0" @@ -1471,6 +1533,12 @@ version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + [[package]] name = "light-openid" version = "1.0.2" @@ -1537,6 +1605,7 @@ dependencies = [ "actix-session", "actix-web", "anyhow", + "askama", "clap", "env_logger", "lazy_static", @@ -1598,6 +1667,12 @@ dependencies = [ "rxml", ] +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + [[package]] name = "miniz_oxide" version = "0.8.3" @@ -1636,6 +1711,16 @@ dependencies = [ "tempfile", ] +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + [[package]] name = "num-bigint" version = "0.4.6" diff --git a/Cargo.toml b/Cargo.toml index 84068b3..815ba8e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,4 +17,5 @@ light-openid = "1.0.2" thiserror = "2.0.11" rand = "0.9.0-beta.3" rust-embed = "8.5.0" -mime_guess = "2.0.5" \ No newline at end of file +mime_guess = "2.0.5" +askama = "0.12.1" \ No newline at end of file diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..6027e50857e6f7716c0c234de212d40a22a768b0 GIT binary patch literal 4710 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 Q1=z=8zl~|3F)ijl0KG@Y`v3p{ literal 0 HcmV?d00001 diff --git a/src/server/web_ui.rs b/src/server/web_ui.rs index cd4c257..1e9558c 100644 --- a/src/server/web_ui.rs +++ b/src/server/web_ui.rs @@ -5,6 +5,7 @@ use crate::user::{User, UserID}; use crate::utils; use actix_session::Session; use actix_web::{web, HttpResponse}; +use askama::Template; use light_openid::primitives::OpenIDConfig; /// Static assets @@ -26,6 +27,10 @@ pub async fn static_file(path: web::Path) -> HttpResult { } } +#[derive(askama::Template)] +#[template(path = "index.html")] +struct HomeTemplate {} + /// Main route pub async fn home(session: Session) -> HttpResult { // Get user information, requesting authentication if information is missing @@ -46,7 +51,9 @@ pub async fn home(session: Session) -> HttpResult { .finish()); }; - Ok(HttpResponse::Ok().body("You are authenticated!")) + Ok(HttpResponse::Ok() + .insert_header(("content-type", "text/html")) + .body(HomeTemplate {}.render().unwrap())) } #[derive(serde::Deserialize)] diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..810d91f --- /dev/null +++ b/templates/index.html @@ -0,0 +1,11 @@ + + + + + Matrix GW + + + + + + \ No newline at end of file