]> Untitled Git - lemmy.git/blobdiff - crates/apub/src/api/resolve_object.rs
Get rid of Safe Views, use serde_skip (#2767)
[lemmy.git] / crates / apub / src / api / resolve_object.rs
index dd39218bc14c8ebd4a441aa3c5c22ba626bb4c9e..cd5ee47c0afe1c73bb334a00437a02e83ce67911 100644 (file)
@@ -11,7 +11,7 @@ use lemmy_api_common::{
 };
 use lemmy_db_schema::{newtypes::PersonId, source::local_site::LocalSite, utils::DbPool};
 use lemmy_db_views::structs::{CommentView, PostView};
-use lemmy_db_views_actor::structs::{CommunityView, PersonViewSafe};
+use lemmy_db_views_actor::structs::{CommunityView, PersonView};
 use lemmy_utils::{error::LemmyError, ConnectionId};
 
 #[async_trait::async_trait(?Send)]
@@ -30,7 +30,9 @@ impl PerformApub for ResolveObject {
     let local_site = LocalSite::read(context.pool()).await?;
     check_private_instance(&local_user_view, &local_site)?;
 
-    let res = search_query_to_object_id(&self.q, local_user_view.is_none(), context)
+    // In release builds only allow for authenticated users to fetch remote objects
+    let local_only = local_user_view.is_none() && cfg!(not(debug_assertions));
+    let res = search_query_to_object_id(&self.q, local_only, context)
       .await
       .map_err(|e| e.with_message("couldnt_find_object"))?;
     convert_response(res, local_user_view.map(|l| l.person.id), context.pool())
@@ -50,15 +52,15 @@ async fn convert_response(
   match object {
     Person(p) => {
       removed_or_deleted = p.deleted;
-      res.person = Some(PersonViewSafe::read(pool, p.id).await?)
+      res.person = Some(PersonView::read(pool, p.id).await?)
     }
     Community(c) => {
       removed_or_deleted = c.deleted || c.removed;
-      res.community = Some(CommunityView::read(pool, c.id, user_id).await?)
+      res.community = Some(CommunityView::read(pool, c.id, user_id, None).await?)
     }
     Post(p) => {
       removed_or_deleted = p.deleted || p.removed;
-      res.post = Some(PostView::read(pool, p.id, user_id).await?)
+      res.post = Some(PostView::read(pool, p.id, user_id, None).await?)
     }
     Comment(c) => {
       removed_or_deleted = c.deleted || c.removed;