ezidam: admin: empty settings page

This commit is contained in:
Philippe Loctaux 2023-03-24 22:18:52 +01:00
parent efebe2fa80
commit eab918d643
6 changed files with 64 additions and 13 deletions

View file

@ -37,17 +37,10 @@ impl AdminMenu {
label: "Server settings", label: "Server settings",
link: uri!(routes::admin::settings::admin_settings).to_string(), link: uri!(routes::admin::settings::admin_settings).to_string(),
icon: icons::SETTINGS, icon: icons::SETTINGS,
// sub: None, sub: Some(vec![SubItem {
sub: Some(vec![
SubItem {
label: "Branding", label: "Branding",
link: uri!(routes::admin::settings::admin_settings).to_string(), link: uri!(routes::admin::settings::admin_settings).to_string(),
}, }]),
SubItem {
label: "Security",
link: uri!(routes::setup::setup).to_string(),
},
]),
}, },
] ]
} }

View file

@ -15,6 +15,7 @@ pub enum Page {
Authorize(Authorize), Authorize(Authorize),
Redirect(Redirect), Redirect(Redirect),
AdminDashboard(AdminDashboard), AdminDashboard(AdminDashboard),
AdminSettings(AdminSettings),
} }
impl Page { impl Page {
@ -27,6 +28,7 @@ impl Page {
Page::Authorize(_) => "pages/oauth/authorize", Page::Authorize(_) => "pages/oauth/authorize",
Page::Redirect(_) => "pages/oauth/redirect", Page::Redirect(_) => "pages/oauth/redirect",
Page::AdminDashboard(_) => "pages/admin/dashboard", Page::AdminDashboard(_) => "pages/admin/dashboard",
Page::AdminSettings(_) => "pages/admin/settings",
} }
} }
@ -39,6 +41,7 @@ impl Page {
Page::Authorize(_) => "Authorize app", Page::Authorize(_) => "Authorize app",
Page::Redirect(_) => "Redirecting", Page::Redirect(_) => "Redirecting",
Page::AdminDashboard(_) => "Admin dashboard", Page::AdminDashboard(_) => "Admin dashboard",
Page::AdminSettings(_) => "Server settings",
} }
} }
@ -66,6 +69,7 @@ impl Page {
Page::Authorize(authorize) => Box::new(authorize), Page::Authorize(authorize) => Box::new(authorize),
Page::Redirect(redirect) => Box::new(redirect), Page::Redirect(redirect) => Box::new(redirect),
Page::AdminDashboard(dashboard) => Box::new(dashboard), Page::AdminDashboard(dashboard) => Box::new(dashboard),
Page::AdminSettings(settings) => Box::new(settings),
} }
} }
} }

View file

@ -2,6 +2,7 @@
// Copyright Thomas Parsley <info@thomasparsley.cz>, MIT License // Copyright Thomas Parsley <info@thomasparsley.cz>, MIT License
use rocket::fairing::{self, Fairing, Kind}; use rocket::fairing::{self, Fairing, Kind};
use rocket::http::Header;
use rocket::{Build, Request, Rocket}; use rocket::{Build, Request, Rocket};
pub struct ResponseTimer {} pub struct ResponseTimer {}
@ -29,6 +30,6 @@ impl Fairing for ResponseTimer {
let start_time = request.local_cache(std::time::Instant::now); let start_time = request.local_cache(std::time::Instant::now);
let end_time = start_time.elapsed(); 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?}")));
} }
} }

View file

@ -1,10 +1,12 @@
use self::settings::*;
use dashboard::*; use dashboard::*;
use rocket::{routes, Route}; use rocket::{routes, Route};
pub mod dashboard; pub mod dashboard;
pub mod settings;
pub fn routes() -> Vec<Route> { pub fn routes() -> Vec<Route> {
routes![admin_dashboard] routes![admin_dashboard, admin_settings]
} }
pub mod content { pub mod content {
@ -17,4 +19,11 @@ pub mod content {
pub struct AdminDashboard { pub struct AdminDashboard {
pub user: JwtClaims, pub user: JwtClaims,
} }
#[derive(Serialize)]
#[serde(crate = "rocket::serde")]
#[derive(Clone)]
pub struct AdminSettings {
pub user: JwtClaims,
}
} }

View file

@ -0,0 +1,9 @@
use crate::routes::prelude::*;
use rocket::get;
#[get("/admin/settings")]
pub async fn admin_settings(mut db: Connection<Database>, admin: JwtAdmin) -> Result<Page> {
Ok(Page::AdminSettings(super::content::AdminSettings {
user: admin.0,
}))
}

View file

@ -0,0 +1,35 @@
{% extends "shell" %}
{% block content %}
<!-- Page header -->
<div class="page-header d-print-none">
<div class="container-xl">
<div class="row g-2 align-items-center">
<div class="col">
<h2 class="page-title">
Server settings
</h2>
</div>
</div>
</div>
</div>
<!-- Page body -->
<div class="page-body">
<div class="container-xl">
<div class="card">
<div class="row g-0">
<div class="col-3 d-none d-md-block border-end">
<div class="card-body">
<div class="list-group list-group-transparent">
<a href="." class="list-group-item list-group-item-action d-flex align-items-center active">Branding</a>
<a href="./security" class="list-group-item list-group-item-action d-flex align-items-center">Security</a>
</div>
</div>
</div>
<div class="col d-flex flex-column">
</div>
</div>
</div>
</div>
</div>
{% endblock content %}