From 8c969cd56f20f547c202e803293f548ef0cde338 Mon Sep 17 00:00:00 2001 From: trisua Date: Sun, 22 Jun 2025 19:21:30 -0400 Subject: [PATCH] fix: user delete audit log --- crates/app/src/routes/api/v1/auth/profile.rs | 11 +++++++++++ crates/core/src/database/auth.rs | 2 +- crates/core/src/database/posts.rs | 17 +++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/crates/app/src/routes/api/v1/auth/profile.rs b/crates/app/src/routes/api/v1/auth/profile.rs index de177fa..419e864 100644 --- a/crates/app/src/routes/api/v1/auth/profile.rs +++ b/crates/app/src/routes/api/v1/auth/profile.rs @@ -22,6 +22,7 @@ use tetratto_core::{ cache::Cache, model::{ auth::{InviteCode, Token, UserSettings}, + moderation::AuditLogEntry, oauth, permissions::FinePermission, socket::{PacketType, SocketMessage, SocketMethod}, @@ -393,6 +394,16 @@ pub async fn delete_user_request( if user.id != id && !user.permissions.check(FinePermission::MANAGE_USERS) { return Json(Error::NotAllowed.into()); + } else if user.permissions.check(FinePermission::MANAGE_USERS) { + if let Err(e) = data + .create_audit_log_entry(AuditLogEntry::new( + user.id, + format!("invoked `delete_user` with x value `{id}`"), + )) + .await + { + return Json(e.into()); + } } match data diff --git a/crates/core/src/database/auth.rs b/crates/core/src/database/auth.rs index 49f2713..7117f69 100644 --- a/crates/core/src/database/auth.rs +++ b/crates/core/src/database/auth.rs @@ -394,7 +394,7 @@ impl DataManager { // delete stackblocks let res = execute!( &conn, - "DELETE FROM stackblocks WHERE owner = $1", + "DELETE FROM stackblocks WHERE initiator = $1", &[&(id as i64)] ); diff --git a/crates/core/src/database/posts.rs b/crates/core/src/database/posts.rs index 656b30e..ba4bc5e 100644 --- a/crates/core/src/database/posts.rs +++ b/crates/core/src/database/posts.rs @@ -343,6 +343,11 @@ impl DataManager { let owner = post.owner; if let Some(ua) = users.get(&owner) { + // check if owner requires an account to view their posts (and if we have one) + if ua.settings.require_account && user.is_none() { + continue; + } + // stack let (can_view, stack) = self .get_post_stack( @@ -376,6 +381,10 @@ impl DataManager { } else { let ua = self.get_user_by_id(owner).await?; + if ua.settings.require_account && user.is_none() { + continue; + } + if ua.permissions.check_banned() | ignore_users.contains(&owner) && !ua.permissions.check(FinePermission::MANAGE_POSTS) { @@ -480,6 +489,10 @@ impl DataManager { let community = post.community; if let Some((ua, community)) = seen_before.get(&(owner, community)) { + if ua.settings.require_account && user.is_none() { + continue; + } + // stack let (can_view, stack) = self .get_post_stack( @@ -514,6 +527,10 @@ impl DataManager { } else { let ua = self.get_user_by_id(owner).await?; + if ua.settings.require_account && user.is_none() { + continue; + } + if ua.permissions.check_banned() | ignore_users.contains(&owner) && !ua.permissions.check(FinePermission::MANAGE_POSTS) {