Dont allow admins to post in community with `posting_restricted_to_mods` (fixes #3571)

community-restricted-only-mods
Felix Ableitner 2024-03-14 16:33:22 +01:00
parent 255e695633
commit 4ffb3e007c
2 changed files with 5 additions and 6 deletions

View File

@ -16,7 +16,7 @@ use lemmy_api_common::{
proxy_image_link_opt_apub, proxy_image_link_opt_apub,
EndpointType, EndpointType,
}, },
}; };use lemmy_db_views_actor::structs::CommunityModeratorView;
use lemmy_db_schema::{ use lemmy_db_schema::{
impls::actor_language::default_post_language, impls::actor_language::default_post_language,
source::{ source::{
@ -29,7 +29,6 @@ use lemmy_db_schema::{
CommunityVisibility, CommunityVisibility,
}; };
use lemmy_db_views::structs::LocalUserView; use lemmy_db_views::structs::LocalUserView;
use lemmy_db_views_actor::structs::CommunityView;
use lemmy_utils::{ use lemmy_utils::{
error::{LemmyError, LemmyErrorExt, LemmyErrorType}, error::{LemmyError, LemmyErrorExt, LemmyErrorType},
spawn_try_task, spawn_try_task,
@ -83,10 +82,10 @@ pub async fn create_post(
let community = Community::read(&mut context.pool(), community_id).await?; let community = Community::read(&mut context.pool(), community_id).await?;
if community.posting_restricted_to_mods { if community.posting_restricted_to_mods {
let community_id = data.community_id; let community_id = data.community_id;
let is_mod = CommunityView::is_mod_or_admin( let is_mod = CommunityModeratorView::is_community_moderator(
&mut context.pool(), &mut context.pool(),
local_user_view.local_user.person_id,
community_id, community_id,
local_user_view.local_user.person_id,
) )
.await?; .await?;
if !is_mod { if !is_mod {

View File

@ -26,7 +26,6 @@ use lemmy_api_common::{
context::LemmyContext, context::LemmyContext,
request::fetch_link_metadata_opt, request::fetch_link_metadata_opt,
utils::{ utils::{
is_mod_or_admin,
local_site_opt_to_sensitive, local_site_opt_to_sensitive,
local_site_opt_to_slur_regex, local_site_opt_to_slur_regex,
process_markdown_opt, process_markdown_opt,
@ -50,6 +49,7 @@ use lemmy_utils::{
use std::ops::Deref; use std::ops::Deref;
use stringreader::StringReader; use stringreader::StringReader;
use url::Url; use url::Url;
use lemmy_db_views_actor::structs::CommunityModeratorView;
const MAX_TITLE_LENGTH: usize = 200; const MAX_TITLE_LENGTH: usize = 200;
@ -179,7 +179,7 @@ impl Object for ApubPost {
let creator = page.creator()?.dereference(context).await?; let creator = page.creator()?.dereference(context).await?;
let community = page.community(context).await?; let community = page.community(context).await?;
if community.posting_restricted_to_mods { 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 let mut name = page
.name .name