From 0e7080337b9dcce0d4161fe9290798393c20388f Mon Sep 17 00:00:00 2001 From: Nutomic Date: Thu, 14 Mar 2024 22:31:54 +0100 Subject: [PATCH] Dont allow admins to post in community with `posting_restricted_to_mods` (fixes #3571) (#4534) * Dont allow admins to post in community with `posting_restricted_to_mods` (fixes #3571) * fmt --- crates/api_crud/src/post/create.rs | 6 +++--- crates/apub/src/objects/post.rs | 5 +++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/api_crud/src/post/create.rs b/crates/api_crud/src/post/create.rs index c52cfaf80..07d577f51 100644 --- a/crates/api_crud/src/post/create.rs +++ b/crates/api_crud/src/post/create.rs @@ -29,7 +29,7 @@ use lemmy_db_schema::{ CommunityVisibility, }; use lemmy_db_views::structs::LocalUserView; -use lemmy_db_views_actor::structs::CommunityView; +use lemmy_db_views_actor::structs::CommunityModeratorView; use lemmy_utils::{ error::{LemmyError, LemmyErrorExt, LemmyErrorType}, spawn_try_task, @@ -83,10 +83,10 @@ pub async fn create_post( let community = Community::read(&mut context.pool(), community_id).await?; if community.posting_restricted_to_mods { let community_id = data.community_id; - let is_mod = CommunityView::is_mod_or_admin( + let is_mod = CommunityModeratorView::is_community_moderator( &mut context.pool(), - local_user_view.local_user.person_id, community_id, + local_user_view.local_user.person_id, ) .await?; if !is_mod { diff --git a/crates/apub/src/objects/post.rs b/crates/apub/src/objects/post.rs index 2b211fff9..ff42b9cbd 100644 --- a/crates/apub/src/objects/post.rs +++ b/crates/apub/src/objects/post.rs @@ -26,7 +26,6 @@ use lemmy_api_common::{ context::LemmyContext, request::fetch_link_metadata_opt, utils::{ - is_mod_or_admin, local_site_opt_to_sensitive, local_site_opt_to_slur_regex, process_markdown_opt, @@ -43,6 +42,7 @@ use lemmy_db_schema::{ }, traits::Crud, }; +use lemmy_db_views_actor::structs::CommunityModeratorView; use lemmy_utils::{ error::LemmyError, utils::{markdown::markdown_to_html, slurs::check_slurs_opt, validation::check_url_scheme}, @@ -185,7 +185,8 @@ impl Object for ApubPost { let creator = page.creator()?.dereference(context).await?; let community = page.community(context).await?; if community.posting_restricted_to_mods { - is_mod_or_admin(&mut context.pool(), &creator, community.id).await?; + CommunityModeratorView::is_community_moderator(&mut context.pool(), community.id, creator.id) + .await?; } let mut name = page .name