summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/block_validator.ex13
-rw-r--r--lib/pleroma/web/activity_pub/side_effects.ex1
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validators/block_validator.ex b/lib/pleroma/web/activity_pub/object_validators/block_validator.ex
index 1dde77198..1989585b7 100644
--- a/lib/pleroma/web/activity_pub/object_validators/block_validator.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/block_validator.ex
@@ -6,6 +6,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
use Ecto.Schema
alias Pleroma.EctoType.ActivityPub.ObjectValidators
+ alias Pleroma.User
import Ecto.Changeset
import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations
@@ -32,6 +33,7 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
|> validate_inclusion(:type, ["Block"])
|> validate_actor_presence()
|> validate_actor_presence(field_name: :object)
+ |> validate_block_acceptance()
end
def cast_and_validate(data) do
@@ -39,4 +41,15 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.BlockValidator do
|> cast_data
|> validate_data
end
+
+ def validate_block_acceptance(cng) do
+ actor = get_field(cng, :actor) |> User.get_cached_by_ap_id()
+
+ if actor.local || Pleroma.Config.get([:activitypub, :unfollow_blocked], true) do
+ cng
+ else
+ cng
+ |> add_error(:actor, "Not accepting remote blocks")
+ end
+ end
end
diff --git a/lib/pleroma/web/activity_pub/side_effects.ex b/lib/pleroma/web/activity_pub/side_effects.ex
index 48350d2b3..5cc2eb378 100644
--- a/lib/pleroma/web/activity_pub/side_effects.ex
+++ b/lib/pleroma/web/activity_pub/side_effects.ex
@@ -29,7 +29,6 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
) do
with %User{} = blocker <- User.get_cached_by_ap_id(blocking_user),
%User{} = blocked <- User.get_cached_by_ap_id(blocked_user) do
- User.unfollow(blocker, blocked)
User.block(blocker, blocked)
end