mirror of https://github.com/LemmyNet/lemmy.git
Adding check in createorupdate post and comment.
parent
9909e18bd2
commit
e30170c432
|
@ -1,5 +1,6 @@
|
|||
use crate::{
|
||||
activities::{
|
||||
check_community_deleted_or_removed,
|
||||
comment::{collect_non_local_mentions, get_notif_recipients},
|
||||
community::{announce::AnnouncableActivities, send_to_community},
|
||||
extract_community,
|
||||
|
@ -98,6 +99,7 @@ impl ActivityHandler for CreateOrUpdateComment {
|
|||
verify_activity(self, &context.settings())?;
|
||||
verify_person_in_community(&self.actor, &community_id, context, request_counter).await?;
|
||||
verify_domains_match(self.actor.inner(), self.object.id_unchecked())?;
|
||||
check_community_deleted_or_removed(&community)?;
|
||||
// TODO: should add a check that the correct community is in cc (probably needs changes to
|
||||
// comment deserialization)
|
||||
self.object.verify(context, request_counter).await?;
|
||||
|
|
|
@ -133,6 +133,14 @@ fn verify_add_remove_moderator_target(
|
|||
Ok(())
|
||||
}
|
||||
|
||||
pub(crate) fn check_community_deleted_or_removed(community: &Community) -> Result<(), LemmyError> {
|
||||
if community.deleted || community.removed {
|
||||
Err(anyhow!("New post or comment cannot be created in deleted or removed community").into())
|
||||
} else {
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
/// Generate a unique ID for an activity, in the format:
|
||||
/// `http(s)://example.com/receive/create/202daf0a-1489-45df-8d2e-c8a3173fed36`
|
||||
fn generate_activity_id<T>(kind: T, protocol_and_hostname: &str) -> Result<Url, ParseError>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::{
|
||||
activities::{
|
||||
check_community_deleted_or_removed,
|
||||
community::{announce::AnnouncableActivities, send_to_community},
|
||||
generate_activity_id,
|
||||
verify_activity,
|
||||
|
@ -87,6 +88,8 @@ impl ActivityHandler for CreateOrUpdatePost {
|
|||
verify_activity(self, &context.settings())?;
|
||||
let community = self.cc[0].dereference(context, request_counter).await?;
|
||||
verify_person_in_community(&self.actor, &self.cc[0], context, request_counter).await?;
|
||||
check_community_deleted_or_removed(&community)?;
|
||||
|
||||
match self.kind {
|
||||
CreateOrUpdateType::Create => {
|
||||
verify_domains_match(self.actor.inner(), self.object.id_unchecked())?;
|
||||
|
|
Loading…
Reference in New Issue