diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-29 17:06:23 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-29 17:06:23 +0200 |
commit | 212a0f23bc894faf88e159560c113f504349cc05 (patch) | |
tree | ee2ff0ff3b185d1874eb0e8fc4b75f1badf659b8 /server/src/ui/admin | |
parent | f73aa32549743b2967160d38c1622199c41524a4 (diff) | |
download | jellything-212a0f23bc894faf88e159560c113f504349cc05.tar jellything-212a0f23bc894faf88e159560c113f504349cc05.tar.bz2 jellything-212a0f23bc894faf88e159560c113f504349cc05.tar.zst |
comiles again but still many logic holes
Diffstat (limited to 'server/src/ui/admin')
-rw-r--r-- | server/src/ui/admin/log.rs | 41 | ||||
-rw-r--r-- | server/src/ui/admin/mod.rs | 18 | ||||
-rw-r--r-- | server/src/ui/admin/user.rs | 24 |
3 files changed, 57 insertions, 26 deletions
diff --git a/server/src/ui/admin/log.rs b/server/src/ui/admin/log.rs index bd6d7af..64782ba 100644 --- a/server/src/ui/admin/log.rs +++ b/server/src/ui/admin/log.rs @@ -3,19 +3,50 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ -use crate::ui::error::MyResult; -use jellylogic::{admin::log::get_log_stream, session::AdminSession}; -use jellyui::admin::log::render_log_line; +use crate::{helper::A, locale::AcceptLanguage, ui::error::MyResult}; +use jellyimport::is_importing; +use jellylogic::{ + admin::log::{get_log_buffer, get_log_stream}, + session::AdminSession, +}; +use jellyui::{ + admin::log::{render_log_line, ServerLogPage}, + render_page, + scaffold::{RenderInfo, SessionInfo}, +}; use rocket::{get, response::content::RawHtml}; use rocket_ws::{Message, Stream, WebSocket}; use serde_json::json; #[get("/admin/log?<warnonly>", rank = 2)] -pub fn r_admin_log<'a>(_session: AdminSession, warnonly: bool) -> MyResult<RawHtml<String>> {} +pub fn r_admin_log<'a>( + session: A<AdminSession>, + warnonly: bool, + lang: AcceptLanguage, +) -> MyResult<RawHtml<String>> { + let AcceptLanguage(lang) = lang; + let messages = get_log_buffer(warnonly) + .into_iter() + .map(|l| render_log_line(&l)) + .collect::<Vec<_>>(); + Ok(RawHtml(render_page( + &ServerLogPage { + messages: &messages, + warnonly, + }, + RenderInfo { + importing: is_importing(), + session: Some(SessionInfo { + user: session.0 .0.user, + }), + }, + lang, + ))) +} #[get("/admin/log?stream&<warnonly>&<html>", rank = 1)] pub fn r_admin_log_stream( - _session: AdminSession, + _session: A<AdminSession>, ws: WebSocket, warnonly: bool, html: bool, diff --git a/server/src/ui/admin/mod.rs b/server/src/ui/admin/mod.rs index b155121..3a9e4e2 100644 --- a/server/src/ui/admin/mod.rs +++ b/server/src/ui/admin/mod.rs @@ -10,7 +10,7 @@ use super::{ assets::{resolve_asset, AVIF_QUALITY, AVIF_SPEED}, error::MyResult, }; -use crate::{database::Database, locale::AcceptLanguage}; +use crate::{database::Database, helper::A, locale::AcceptLanguage}; use anyhow::{anyhow, Context}; use jellybase::{assetfed::AssetInner, federation::Federation, CONF}; use jellycommon::routes::u_admin_dashboard; @@ -33,7 +33,7 @@ use tokio::{sync::Semaphore, task::spawn_blocking}; #[get("/admin/dashboard")] pub async fn r_admin_dashboard( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, lang: AcceptLanguage, ) -> MyResult<RawHtml<String>> { @@ -62,7 +62,7 @@ pub async fn r_admin_dashboard( RenderInfo { importing: is_importing(), session: Some(SessionInfo { - user: session.0.user, + user: session.0 .0.user, }), }, lang, @@ -71,7 +71,7 @@ pub async fn r_admin_dashboard( #[post("/admin/generate_invite")] pub async fn r_admin_invite( - _session: AdminSession, + _session: A<AdminSession>, database: &State<Database>, ) -> MyResult<Redirect> { let i = format!("{}", rand::rng().random::<u128>()); @@ -87,7 +87,7 @@ pub struct DeleteInvite { #[post("/admin/remove_invite", data = "<form>")] pub async fn r_admin_remove_invite( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, form: Form<DeleteInvite>, ) -> MyResult<Redirect> { @@ -101,7 +101,7 @@ pub async fn r_admin_remove_invite( #[post("/admin/import?<incremental>")] pub async fn r_admin_import( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, _federation: &State<Federation>, incremental: bool, @@ -121,7 +121,7 @@ pub async fn r_admin_import( #[post("/admin/update_search")] pub async fn r_admin_update_search( - _session: AdminSession, + _session: A<AdminSession>, database: &State<Database>, ) -> MyResult<Redirect> { let db2 = (*database).clone(); @@ -141,7 +141,7 @@ pub async fn r_admin_update_search( #[post("/admin/delete_cache")] pub async fn r_admin_delete_cache( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, ) -> MyResult<Redirect> { drop(session); @@ -166,7 +166,7 @@ fn is_transcoding() -> bool { #[post("/admin/transcode_posters")] pub async fn r_admin_transcode_posters( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, ) -> MyResult<Redirect> { drop(session); diff --git a/server/src/ui/admin/user.rs b/server/src/ui/admin/user.rs index 77bcc71..fb646ab 100644 --- a/server/src/ui/admin/user.rs +++ b/server/src/ui/admin/user.rs @@ -3,7 +3,7 @@ which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin <metamuffin.org> */ -use crate::{database::Database, locale::AcceptLanguage, ui::error::MyResult}; +use crate::{database::Database, helper::A, locale::AcceptLanguage, ui::error::MyResult}; use anyhow::{anyhow, Context}; use jellycommon::user::UserPermission; use jellyimport::is_importing; @@ -17,12 +17,12 @@ use rocket::{form::Form, get, post, response::content::RawHtml, FromForm, FromFo #[get("/admin/users")] pub fn r_admin_users( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, lang: AcceptLanguage, ) -> MyResult<RawHtml<String>> { let AcceptLanguage(lang) = lang; - let r = admin_users(database, &session)?; + let r = admin_users(database, &session.0)?; Ok(RawHtml(render_page( &AdminUsersPage { flash: None, @@ -32,7 +32,7 @@ pub fn r_admin_users( RenderInfo { importing: is_importing(), session: Some(SessionInfo { - user: session.0.user, + user: session.0 .0.user, }), }, lang, @@ -41,7 +41,7 @@ pub fn r_admin_users( #[get("/admin/user/<name>")] pub fn r_admin_user<'a>( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, name: &'a str, lang: AcceptLanguage, @@ -60,7 +60,7 @@ pub fn r_admin_user<'a>( RenderInfo { importing: is_importing(), session: Some(SessionInfo { - user: session.0.user, + user: session.0 .0.user, }), }, lang, @@ -82,7 +82,7 @@ pub enum GrantState { #[post("/admin/user/<name>/update_permission", data = "<form>")] pub fn r_admin_user_permission( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, form: Form<UserPermissionForm>, name: &str, @@ -92,7 +92,7 @@ pub fn r_admin_user_permission( let perm = serde_json::from_str::<UserPermission>(&form.permission) .context("parsing provided permission")?; - database.update_user(&form.name, |user| { + database.update_user(name, |user| { match form.action { GrantState::Grant => drop(user.permissions.0.insert(perm.clone(), true)), GrantState::Revoke => drop(user.permissions.0.insert(perm.clone(), false)), @@ -114,7 +114,7 @@ pub fn r_admin_user_permission( RenderInfo { importing: is_importing(), session: Some(SessionInfo { - user: session.0.user, + user: session.0 .0.user, }), }, lang, @@ -123,7 +123,7 @@ pub fn r_admin_user_permission( #[post("/admin/<name>/remove")] pub fn r_admin_remove_user( - session: AdminSession, + session: A<AdminSession>, database: &State<Database>, name: &str, lang: AcceptLanguage, @@ -132,7 +132,7 @@ pub fn r_admin_remove_user( if !database.delete_user(&name)? { Err(anyhow!("user did not exist"))?; } - let r = admin_users(database, &session)?; + let r = admin_users(database, &session.0)?; Ok(RawHtml(render_page( &AdminUsersPage { @@ -143,7 +143,7 @@ pub fn r_admin_remove_user( RenderInfo { importing: is_importing(), session: Some(SessionInfo { - user: session.0.user, + user: session.0 .0.user, }), }, lang, |