diff options
author | lain <lain@soykaf.club> | 2020-08-05 17:36:27 +0200 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-08-05 17:36:27 +0200 |
commit | 3655175639a004976ef8296a0838e72642ba0b11 (patch) | |
tree | 81c38daae5a612f1a21eee58ad1e3fb9ad301aef /lib/pleroma | |
parent | 9c96fc052a89789b398794761741783eaa86d6a1 (diff) | |
download | pleroma-3655175639a004976ef8296a0838e72642ba0b11.tar.gz |
CommonValidations: Refactor `same_domain?`
Diffstat (limited to 'lib/pleroma')
-rw-r--r-- | lib/pleroma/web/activity_pub/object_validators/common_validations.ex | 23 |
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 |