From 4d9305f3d260cfe8c130139a38d0a9ca632c9f26 Mon Sep 17 00:00:00 2001 From: Philippe Loctaux Date: Fri, 7 Apr 2023 17:48:50 +0200 Subject: [PATCH] settings/security: display page --- crates/ezidam/src/menu/items/user.rs | 14 +++- crates/ezidam/src/page.rs | 5 ++ crates/ezidam/src/routes/settings.rs | 10 +++ crates/ezidam/src/routes/settings/security.rs | 15 ++++ .../pages/settings/personal.html.tera | 2 + .../pages/settings/security.html.tera | 81 +++++++++++++++++++ 6 files changed, 123 insertions(+), 4 deletions(-) create mode 100644 crates/ezidam/src/routes/settings/security.rs create mode 100644 crates/ezidam/templates/pages/settings/security.html.tera diff --git a/crates/ezidam/src/menu/items/user.rs b/crates/ezidam/src/menu/items/user.rs index a0b67c1..d9b2dbf 100644 --- a/crates/ezidam/src/menu/items/user.rs +++ b/crates/ezidam/src/menu/items/user.rs @@ -29,10 +29,16 @@ impl UserMenu { label: "Settings", link: uri!(routes::settings::user_settings).to_string(), icon: Icon::Settings.svg, - sub: Some(vec![SubItem { - label: "Personal", - link: uri!(routes::settings::personal::user_settings_personal).to_string(), - }]), + sub: Some(vec![ + SubItem { + label: "Personal", + link: uri!(routes::settings::personal::user_settings_personal).to_string(), + }, + SubItem { + label: "Security", + link: uri!(routes::settings::security::user_settings_security).to_string(), + }, + ]), }, ] } diff --git a/crates/ezidam/src/page.rs b/crates/ezidam/src/page.rs index bcc1666..1f38779 100644 --- a/crates/ezidam/src/page.rs +++ b/crates/ezidam/src/page.rs @@ -22,6 +22,7 @@ pub enum Page { AdminAppsNew(AdminAppsNew), AdminAppsView(AdminAppsView), UserPersonalSettings(UserPersonalSettings), + UserSecuritySettings(UserSecuritySettings), } impl Page { @@ -40,6 +41,7 @@ impl Page { Page::AdminAppsNew(_) => "pages/admin/apps/new", Page::AdminAppsView(_) => "pages/admin/apps/view", Page::UserPersonalSettings(_) => "pages/settings/personal", + Page::UserSecuritySettings(_) => "pages/settings/security", } } @@ -58,6 +60,7 @@ impl Page { Page::AdminAppsNew(_) => "New application", Page::AdminAppsView(_) => "Application info", Page::UserPersonalSettings(_) => "Personal settings", + Page::UserSecuritySettings(_) => "Security settings", } } @@ -78,6 +81,7 @@ impl Page { Page::AdminAppsNew(_) => Some(AdminMenu::Apps.into()), Page::AdminAppsView(_) => Some(AdminMenu::Apps.into()), Page::UserPersonalSettings(_) => Some(UserMenu::Settings.into()), + Page::UserSecuritySettings(_) => Some(UserMenu::Settings.into()), } } @@ -96,6 +100,7 @@ impl Page { Page::AdminAppsNew(new) => Box::new(new), Page::AdminAppsView(view) => Box::new(view), Page::UserPersonalSettings(personal) => Box::new(personal), + Page::UserSecuritySettings(security) => Box::new(security), } } } diff --git a/crates/ezidam/src/routes/settings.rs b/crates/ezidam/src/routes/settings.rs index 838454d..f9d4fea 100644 --- a/crates/ezidam/src/routes/settings.rs +++ b/crates/ezidam/src/routes/settings.rs @@ -1,14 +1,17 @@ use super::prelude::*; use personal::*; use rocket::get; +use security::*; pub mod personal; +pub mod security; pub fn routes() -> Vec { routes![ user_settings, user_settings_personal, user_settings_personal_form, + user_settings_security, ] } @@ -30,4 +33,11 @@ pub mod content { pub name: Option, pub email: Option, } + + #[derive(Serialize)] + #[serde(crate = "rocket::serde")] + #[derive(Clone)] + pub struct UserSecuritySettings { + pub user: JwtClaims, + } } diff --git a/crates/ezidam/src/routes/settings/security.rs b/crates/ezidam/src/routes/settings/security.rs new file mode 100644 index 0000000..213f5f5 --- /dev/null +++ b/crates/ezidam/src/routes/settings/security.rs @@ -0,0 +1,15 @@ +use crate::routes::prelude::*; +use rocket::get; + +#[get("/settings/security")] +pub async fn user_settings_security( + jwt_user: JwtUser, + flash: Option>, +) -> Result