diff options
Diffstat (limited to 'server/src/routes/ui/admin/mod.rs')
-rw-r--r-- | server/src/routes/ui/admin/mod.rs | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/server/src/routes/ui/admin/mod.rs b/server/src/routes/ui/admin/mod.rs index 0775423..f779700 100644 --- a/server/src/routes/ui/admin/mod.rs +++ b/server/src/routes/ui/admin/mod.rs @@ -3,12 +3,15 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2023 metamuffin <metamuffin.org> */ +pub mod log; + +use super::account::session::AdminSession; use crate::{ database::Database, federation::Federation, import::import, routes::ui::{ - account::session::Session, + admin::log::rocket_uri_macro_r_admin_log, error::MyResult, layout::{DynLayoutPage, FlashDisplay, LayoutPage}, }, @@ -21,12 +24,9 @@ use std::time::Instant; #[get("/admin/dashboard")] pub fn r_admin_dashboard( - session: Session, + _session: AdminSession, database: &State<Database>, ) -> MyResult<DynLayoutPage<'static>> { - if !session.user.admin { - Err(anyhow!("you not admin"))? - } admin_dashboard(database, None) } @@ -44,6 +44,10 @@ pub fn admin_dashboard<'a>( content: markup::new! { h1 { "Admin Panel" } @FlashDisplay { flash: flash.clone() } + ul { + li{a[href=uri!(r_admin_log(true))] { "Server Log (Warnings only)" }} + li{a[href=uri!(r_admin_log(false))] { "Server Log (Full) " }} + } h2 { "Library" } form[method="POST", action=uri!(r_admin_import())] { input[type="submit", value="(Re-)Import Library"]; @@ -76,13 +80,9 @@ pub fn admin_dashboard<'a>( #[post("/admin/generate_invite")] pub fn r_admin_invite( - session: Session, + _session: AdminSession, database: &State<Database>, ) -> MyResult<DynLayoutPage<'static>> { - if !session.user.admin { - Err(anyhow!("you not admin"))? - } - let i = format!("{}", rand::thread_rng().gen::<u128>()); database.invite.insert(&i, &())?; @@ -96,13 +96,11 @@ pub struct DeleteUser { #[post("/admin/remove_user", data = "<form>")] pub fn r_admin_remove_user( - session: Session, + session: AdminSession, database: &State<Database>, form: Form<DeleteUser>, ) -> MyResult<DynLayoutPage<'static>> { - if !session.user.admin { - Err(anyhow!("you not admin"))? - } + drop(session); database .user .remove(&form.name)? @@ -118,13 +116,11 @@ pub struct DeleteInvite { #[post("/admin/remove_invite", data = "<form>")] pub fn r_admin_remove_invite( - session: Session, + session: AdminSession, database: &State<Database>, form: Form<DeleteInvite>, ) -> MyResult<DynLayoutPage<'static>> { - if !session.user.admin { - Err(anyhow!("you not admin"))? - } + drop(session); database .invite .remove(&form.invite)? @@ -135,13 +131,11 @@ pub fn r_admin_remove_invite( #[post("/admin/import")] pub async fn r_admin_import( - session: Session, + session: AdminSession, database: &State<Database>, federation: &State<Federation>, ) -> MyResult<DynLayoutPage<'static>> { - if !session.user.admin { - Err(anyhow!("you not admin"))? - } + drop(session); let t = Instant::now(); let r = import(&database, &federation).await; admin_dashboard( |