aboutsummaryrefslogtreecommitdiff
path: root/server/src/ui/admin
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/ui/admin')
-rw-r--r--server/src/ui/admin/log.rs41
-rw-r--r--server/src/ui/admin/mod.rs18
-rw-r--r--server/src/ui/admin/user.rs24
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,