aboutsummaryrefslogtreecommitdiff
path: root/server/src/routes/ui/admin/mod.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/routes/ui/admin/mod.rs')
-rw-r--r--server/src/routes/ui/admin/mod.rs38
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(