diff --git a/crates/ezidam/src/page.rs b/crates/ezidam/src/page.rs index 7f88843..4c1a6dc 100644 --- a/crates/ezidam/src/page.rs +++ b/crates/ezidam/src/page.rs @@ -15,6 +15,7 @@ pub enum Page { Homepage(Homepage), Authorize(Authorize), Redirect(Redirect), + AdminDashboard(AdminDashboard), } impl Page { @@ -26,6 +27,7 @@ impl Page { Page::Homepage(_) => "pages/homepage", Page::Authorize(_) => "pages/oauth/authorize", Page::Redirect(_) => "pages/oauth/redirect", + Page::AdminDashboard(_) => "pages/admin/dashboard", } } @@ -37,6 +39,7 @@ impl Page { Page::Homepage(_) => "Home", Page::Authorize(_) => "Authorize app", Page::Redirect(_) => "Redirecting", + Page::AdminDashboard(_) => "Admin dashboard", } } @@ -51,6 +54,7 @@ impl Page { Page::Homepage(_) => Some(UserMenu::Home.into()), Page::Authorize(_) => None, Page::Redirect(_) => None, + Page::AdminDashboard(_) => Some(AdminMenu::AdminDashboard.into()), } } @@ -62,6 +66,7 @@ impl Page { Page::Homepage(homepage) => Box::new(homepage), Page::Authorize(authorize) => Box::new(authorize), Page::Redirect(redirect) => Box::new(redirect), + Page::AdminDashboard(dashboard) => Box::new(dashboard), } } } diff --git a/crates/ezidam/src/page/content.rs b/crates/ezidam/src/page/content.rs index 61fb690..5bf425d 100644 --- a/crates/ezidam/src/page/content.rs +++ b/crates/ezidam/src/page/content.rs @@ -1,3 +1,4 @@ pub use crate::error::content::*; +pub use crate::routes::admin::content::*; pub use crate::routes::oauth::content::*; pub use crate::routes::root::content::*; diff --git a/crates/ezidam/src/routes.rs b/crates/ezidam/src/routes.rs index c3218ed..57bc79b 100644 --- a/crates/ezidam/src/routes.rs +++ b/crates/ezidam/src/routes.rs @@ -1,5 +1,6 @@ use rocket::{Build, Rocket}; +pub mod admin; pub mod oauth; pub mod root; pub mod setup; @@ -39,4 +40,6 @@ pub fn routes(rocket_builder: Rocket) -> Rocket { .mount("/", oauth::routes()) // Well known .mount("/", well_known::routes()) + // Admin + .mount("/", admin::routes()) } diff --git a/crates/ezidam/src/routes/admin.rs b/crates/ezidam/src/routes/admin.rs new file mode 100644 index 0000000..fc5e065 --- /dev/null +++ b/crates/ezidam/src/routes/admin.rs @@ -0,0 +1,20 @@ +use dashboard::*; +use rocket::{routes, Route}; + +pub mod dashboard; + +pub fn routes() -> Vec { + routes![admin_dashboard] +} + +pub mod content { + use jwt::JwtClaims; + use rocket::serde::Serialize; + + #[derive(Serialize)] + #[serde(crate = "rocket::serde")] + #[derive(Clone)] + pub struct AdminDashboard { + pub user: JwtClaims, + } +} diff --git a/crates/ezidam/src/routes/admin/dashboard.rs b/crates/ezidam/src/routes/admin/dashboard.rs new file mode 100644 index 0000000..9c44d5e --- /dev/null +++ b/crates/ezidam/src/routes/admin/dashboard.rs @@ -0,0 +1,9 @@ +use crate::routes::prelude::*; +use rocket::get; + +#[get("/admin")] +pub async fn admin_dashboard(mut db: Connection, admin: JwtAdmin) -> Result { + Ok(Page::AdminDashboard(super::content::AdminDashboard { + user: admin.0, + })) +} diff --git a/crates/ezidam/templates/pages/admin/dashboard.html.tera b/crates/ezidam/templates/pages/admin/dashboard.html.tera new file mode 100644 index 0000000..825b2ad --- /dev/null +++ b/crates/ezidam/templates/pages/admin/dashboard.html.tera @@ -0,0 +1,4 @@ +{% extends "shell" %} + +{% block content %} +{% endblock content %} diff --git a/crates/ezidam/templates/shell/header.html.tera b/crates/ezidam/templates/shell/header.html.tera index c6a66ad..c040670 100644 --- a/crates/ezidam/templates/shell/header.html.tera +++ b/crates/ezidam/templates/shell/header.html.tera @@ -35,7 +35,10 @@