X-Git-Url: http://these/git/?a=blobdiff_plain;f=crates%2Fapub%2Fsrc%2Factivities%2Fblock%2Fblock_user.rs;h=3e574232d24e1fc0f770720dfc748d2cd5ba4cc4;hb=235cc8b22897bfb3e71ba3dbd725d36863fea8ba;hp=72c4316373aa77706714f7ab93f5ffc8a5dc53e8;hpb=276a8c2bd3e4fd1323e66b808675cf14cf6f75c5;p=lemmy.git diff --git a/crates/apub/src/activities/block/block_user.rs b/crates/apub/src/activities/block/block_user.rs index 72c43163..3e574232 100644 --- a/crates/apub/src/activities/block/block_user.rs +++ b/crates/apub/src/activities/block/block_user.rs @@ -9,6 +9,8 @@ use crate::{ verify_person_in_community, }, activity_lists::AnnouncableActivities, + check_apub_id_valid, + fetch_local_site_data, local_instance, objects::{community::ApubCommunity, instance::remote_instance_inboxes, person::ApubPerson}, protocol::activities::block::block_user::BlockUser, @@ -33,7 +35,7 @@ use lemmy_db_schema::{ CommunityPersonBanForm, }, moderator::{ModBan, ModBanForm, ModBanFromCommunity, ModBanFromCommunityForm}, - person::Person, + person::{Person, PersonUpdateForm}, }, traits::{Bannable, Crud, Followable}, }; @@ -123,6 +125,10 @@ impl ActivityHandler for BlockUser { context: &Data, request_counter: &mut i32, ) -> Result<(), LemmyError> { + let local_site_data = blocking(context.pool(), fetch_local_site_data).await??; + check_apub_id_valid(self.id(), &local_site_data, context.settings()) + .map_err(LemmyError::from_message)?; + verify_is_public(&self.to, &self.cc)?; match self .target @@ -177,7 +183,14 @@ impl ActivityHandler for BlockUser { match target { SiteOrCommunity::Site(_site) => { let blocked_person = blocking(context.pool(), move |conn| { - Person::ban_person(conn, blocked_person.id, true, expires) + Person::update( + conn, + blocked_person.id, + &PersonUpdateForm::builder() + .banned(Some(true)) + .ban_expires(Some(expires)) + .build(), + ) }) .await??; if self.remove_data.unwrap_or(false) {