aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-08-05 17:36:27 +0200
committerlain <lain@soykaf.club>2020-08-05 17:36:27 +0200
commit3655175639a004976ef8296a0838e72642ba0b11 (patch)
tree81c38daae5a612f1a21eee58ad1e3fb9ad301aef /lib/pleroma
parent9c96fc052a89789b398794761741783eaa86d6a1 (diff)
downloadpleroma-3655175639a004976ef8296a0838e72642ba0b11.tar.gz
CommonValidations: Refactor `same_domain?`
Diffstat (limited to 'lib/pleroma')
-rw-r--r--lib/pleroma/web/activity_pub/object_validators/common_validations.ex23
1 files changed, 13 insertions, 10 deletions
diff --git a/lib/pleroma/web/activity_pub/object_validators/common_validations.ex b/lib/pleroma/web/activity_pub/object_validators/common_validations.ex
index e4c5d9619..82a9d39b5 100644
--- a/lib/pleroma/web/activity_pub/object_validators/common_validations.ex
+++ b/lib/pleroma/web/activity_pub/object_validators/common_validations.ex
@@ -126,18 +126,21 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations do
end
end
- def same_domain?(cng, field_one \\ :actor, field_two \\ :object) do
- actor_uri =
- cng
- |> get_field(field_one)
- |> URI.parse()
+ def same_domain?(cng, fields \\ [:actor, :object]) do
+ unique_domains =
+ fields
+ |> Enum.map(fn field ->
+ %URI{host: host} =
+ cng
+ |> get_field(field)
+ |> URI.parse()
- object_uri =
- cng
- |> get_field(field_two)
- |> URI.parse()
+ host
+ end)
+ |> Enum.uniq()
+ |> Enum.count()
- object_uri.host == actor_uri.host
+ unique_domains == 1
end
# This figures out if a user is able to create, delete or modify something