From eab918d643c7a3ba3f0414d331da2db34b967ee4 Mon Sep 17 00:00:00 2001 From: Philippe Loctaux Date: Fri, 24 Mar 2023 22:18:52 +0100 Subject: [PATCH] ezidam: admin: empty settings page --- crates/ezidam/src/menu/items/admin.rs | 15 +++----- crates/ezidam/src/page.rs | 4 +++ crates/ezidam/src/response_timer.rs | 3 +- crates/ezidam/src/routes/admin.rs | 11 +++++- crates/ezidam/src/routes/admin/settings.rs | 9 +++++ .../templates/pages/admin/settings.html.tera | 35 +++++++++++++++++++ 6 files changed, 64 insertions(+), 13 deletions(-) create mode 100644 crates/ezidam/src/routes/admin/settings.rs create mode 100644 crates/ezidam/templates/pages/admin/settings.html.tera diff --git a/crates/ezidam/src/menu/items/admin.rs b/crates/ezidam/src/menu/items/admin.rs index f1dc6db..da7ba9a 100644 --- a/crates/ezidam/src/menu/items/admin.rs +++ b/crates/ezidam/src/menu/items/admin.rs @@ -37,17 +37,10 @@ impl AdminMenu { label: "Server settings", link: uri!(routes::admin::settings::admin_settings).to_string(), icon: icons::SETTINGS, - // sub: None, - sub: Some(vec![ - SubItem { - label: "Branding", - link: uri!(routes::admin::settings::admin_settings).to_string(), - }, - SubItem { - label: "Security", - link: uri!(routes::setup::setup).to_string(), - }, - ]), + sub: Some(vec![SubItem { + label: "Branding", + link: uri!(routes::admin::settings::admin_settings).to_string(), + }]), }, ] } diff --git a/crates/ezidam/src/page.rs b/crates/ezidam/src/page.rs index 5a2b72f..1fc1364 100644 --- a/crates/ezidam/src/page.rs +++ b/crates/ezidam/src/page.rs @@ -15,6 +15,7 @@ pub enum Page { Authorize(Authorize), Redirect(Redirect), AdminDashboard(AdminDashboard), + AdminSettings(AdminSettings), } impl Page { @@ -27,6 +28,7 @@ impl Page { Page::Authorize(_) => "pages/oauth/authorize", Page::Redirect(_) => "pages/oauth/redirect", Page::AdminDashboard(_) => "pages/admin/dashboard", + Page::AdminSettings(_) => "pages/admin/settings", } } @@ -39,6 +41,7 @@ impl Page { Page::Authorize(_) => "Authorize app", Page::Redirect(_) => "Redirecting", Page::AdminDashboard(_) => "Admin dashboard", + Page::AdminSettings(_) => "Server settings", } } @@ -66,6 +69,7 @@ impl Page { Page::Authorize(authorize) => Box::new(authorize), Page::Redirect(redirect) => Box::new(redirect), Page::AdminDashboard(dashboard) => Box::new(dashboard), + Page::AdminSettings(settings) => Box::new(settings), } } } diff --git a/crates/ezidam/src/response_timer.rs b/crates/ezidam/src/response_timer.rs index 30f0646..ed312ac 100644 --- a/crates/ezidam/src/response_timer.rs +++ b/crates/ezidam/src/response_timer.rs @@ -2,6 +2,7 @@ // Copyright Thomas Parsley , MIT License use rocket::fairing::{self, Fairing, Kind}; +use rocket::http::Header; use rocket::{Build, Request, Rocket}; pub struct ResponseTimer {} @@ -29,6 +30,6 @@ impl Fairing for ResponseTimer { let start_time = request.local_cache(std::time::Instant::now); let end_time = start_time.elapsed(); - response.set_raw_header("X-Response-Time", format!("{end_time:.2?}")); + response.set_header(Header::new("X-Response-Time", format!("{end_time:.2?}"))); } } diff --git a/crates/ezidam/src/routes/admin.rs b/crates/ezidam/src/routes/admin.rs index fc5e065..8b8faaa 100644 --- a/crates/ezidam/src/routes/admin.rs +++ b/crates/ezidam/src/routes/admin.rs @@ -1,10 +1,12 @@ +use self::settings::*; use dashboard::*; use rocket::{routes, Route}; pub mod dashboard; +pub mod settings; pub fn routes() -> Vec { - routes![admin_dashboard] + routes![admin_dashboard, admin_settings] } pub mod content { @@ -17,4 +19,11 @@ pub mod content { pub struct AdminDashboard { pub user: JwtClaims, } + + #[derive(Serialize)] + #[serde(crate = "rocket::serde")] + #[derive(Clone)] + pub struct AdminSettings { + pub user: JwtClaims, + } } diff --git a/crates/ezidam/src/routes/admin/settings.rs b/crates/ezidam/src/routes/admin/settings.rs new file mode 100644 index 0000000..a31fd3b --- /dev/null +++ b/crates/ezidam/src/routes/admin/settings.rs @@ -0,0 +1,9 @@ +use crate::routes::prelude::*; +use rocket::get; + +#[get("/admin/settings")] +pub async fn admin_settings(mut db: Connection, admin: JwtAdmin) -> Result { + Ok(Page::AdminSettings(super::content::AdminSettings { + user: admin.0, + })) +} diff --git a/crates/ezidam/templates/pages/admin/settings.html.tera b/crates/ezidam/templates/pages/admin/settings.html.tera new file mode 100644 index 0000000..1b00229 --- /dev/null +++ b/crates/ezidam/templates/pages/admin/settings.html.tera @@ -0,0 +1,35 @@ +{% extends "shell" %} + +{% block content %} + + + +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+{% endblock content %}