Fix community add mod check (fixes #4624)

This commit is contained in:
Felix Ableitner 2024-04-25 10:20:11 +02:00
parent 66e06b3952
commit 1956ec208f
2 changed files with 14 additions and 2 deletions

2
Cargo.lock generated
View file

@ -2588,7 +2588,7 @@ dependencies = [
"actix-web",
"actix-web-httpauth",
"anyhow",
"base64 0.21.7",
"base64 0.22.0",
"bcrypt",
"captcha",
"chrono",

View file

@ -36,8 +36,20 @@ pub async fn add_mod_to_community(
let community = Community::read(&mut context.pool(), community_id)
.await?
.ok_or(LemmyErrorType::CouldntFindCommunity)?;
// If user is admin and community is remote, explicitly check that he is a
// moderator. This is necessary because otherwise the action would be rejected
// by the community's home instance.
if local_user_view.local_user.admin && !community.local {
Err(LemmyErrorType::NotAModerator)?
let is_mod = CommunityModeratorView::is_community_moderator(
&mut context.pool(),
community.id,
local_user_view.person.id,
)
.await?;
if !is_mod {
Err(LemmyErrorType::NotAModerator)?
}
}
// Update in local database