]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/activities/community/report.rs
Sanitize html (#3708)
[lemmy.git] / crates / apub / src / activities / community / report.rs
index a5fab8a01a9d5c4081dbc593057b4a8a57a186b7..22a8c12be116f53b215ac081e438ff1bc2e01ef5 100644 (file)
@@ -1,6 +1,6 @@
 use crate::{
   activities::{generate_activity_id, send_lemmy_activity, verify_person_in_community},
-  insert_activity,
+  insert_received_activity,
   objects::{community::ApubCommunity, person::ApubPerson},
   protocol::{activities::community::report::Report, InCommunity},
   PostOrComment,
@@ -16,8 +16,7 @@ use lemmy_api_common::{
   comment::{CommentReportResponse, CreateCommentReport},
   context::LemmyContext,
   post::{CreatePostReport, PostReportResponse},
-  utils::get_local_user_view_from_jwt,
-  websocket::UserOperation,
+  utils::{local_user_view_from_jwt, sanitize_html},
 };
 use lemmy_db_schema::{
   source::{
@@ -26,7 +25,6 @@ use lemmy_db_schema::{
   },
   traits::Reportable,
 };
-use lemmy_db_views::structs::{CommentReportView, PostReportView};
 use lemmy_utils::error::LemmyError;
 use url::Url;
 
@@ -39,8 +37,7 @@ impl SendActivity for CreatePostReport {
     response: &Self::Response,
     context: &Data<LemmyContext>,
   ) -> Result<(), LemmyError> {
-    let local_user_view =
-      get_local_user_view_from_jwt(&request.auth, context.pool(), context.secret()).await?;
+    let local_user_view = local_user_view_from_jwt(&request.auth, context).await?;
     Report::send(
       ObjectId::from(response.post_report_view.post.ap_id.clone()),
       &local_user_view.person.into(),
@@ -61,8 +58,7 @@ impl SendActivity for CreateCommentReport {
     response: &Self::Response,
     context: &Data<LemmyContext>,
   ) -> Result<(), LemmyError> {
-    let local_user_view =
-      get_local_user_view_from_jwt(&request.auth, context.pool(), context.secret()).await?;
+    let local_user_view = local_user_view_from_jwt(&request.auth, context).await?;
     Report::send(
       ObjectId::from(response.comment_report_view.comment.ap_id.clone()),
       &local_user_view.person.into(),
@@ -119,6 +115,7 @@ impl ActivityHandler for Report {
 
   #[tracing::instrument(skip_all)]
   async fn verify(&self, context: &Data<Self::DataType>) -> Result<(), LemmyError> {
+    insert_received_activity(&self.id, context).await?;
     let community = self.community(context).await?;
     verify_person_in_community(&self.actor, &community, context).await?;
     Ok(())
@@ -126,7 +123,6 @@ impl ActivityHandler for Report {
 
   #[tracing::instrument(skip_all)]
   async fn receive(self, context: &Data<Self::DataType>) -> Result<(), LemmyError> {
-    insert_activity(&self.id, &self, false, true, context).await?;
     let actor = self.actor.dereference(context).await?;
     match self.object.dereference(context).await? {
       PostOrComment::Post(post) => {
@@ -135,49 +131,19 @@ impl ActivityHandler for Report {
           post_id: post.id,
           original_post_name: post.name.clone(),
           original_post_url: post.url.clone(),
-          reason: self.summary,
+          reason: sanitize_html(&self.summary),
           original_post_body: post.body.clone(),
         };
-
-        let report = PostReport::report(context.pool(), &report_form).await?;
-
-        let post_report_view = PostReportView::read(context.pool(), report.id, actor.id).await?;
-
-        context
-          .chat_server()
-          .send_mod_room_message(
-            UserOperation::CreateCommentReport,
-            &PostReportResponse { post_report_view },
-            post.community_id,
-            None,
-          )
-          .await?;
+        PostReport::report(&mut context.pool(), &report_form).await?;
       }
       PostOrComment::Comment(comment) => {
         let report_form = CommentReportForm {
           creator_id: actor.id,
           comment_id: comment.id,
           original_comment_text: comment.content.clone(),
-          reason: self.summary,
+          reason: sanitize_html(&self.summary),
         };
-
-        let report = CommentReport::report(context.pool(), &report_form).await?;
-
-        let comment_report_view =
-          CommentReportView::read(context.pool(), report.id, actor.id).await?;
-        let community_id = comment_report_view.community.id;
-
-        context
-          .chat_server()
-          .send_mod_room_message(
-            UserOperation::CreateCommentReport,
-            &CommentReportResponse {
-              comment_report_view,
-            },
-            community_id,
-            None,
-          )
-          .await?;
+        CommentReport::report(&mut context.pool(), &report_form).await?;
       }
     };
     Ok(())