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 0000000..6027e50 Binary files /dev/null and b/assets/favicon.png differ 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