diff options
| author | lain <lain@soykaf.club> | 2020-05-18 16:54:10 +0200 | 
|---|---|---|
| committer | lain <lain@soykaf.club> | 2020-05-18 16:54:10 +0200 | 
| commit | 0d5bce018df9c99c771daaaa1de3ab0efc0cba5c (patch) | |
| tree | 1f43336950f76e39748084b48e650634718272de /lib | |
| parent | 17a8342c1e2bd615edb8e41535aa96c1b22d440a (diff) | |
| download | pleroma-0d5bce018df9c99c771daaaa1de3ab0efc0cba5c.tar.gz pleroma-0d5bce018df9c99c771daaaa1de3ab0efc0cba5c.zip | |
AnnounceValidator: Validate for existing announce
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/activity_pub/object_validators/announce_validator.ex | 17 | 
1 files changed, 16 insertions, 1 deletions
| diff --git a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex index fbefaf257..158ae199d 100644 --- a/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex +++ b/lib/pleroma/web/activity_pub/object_validators/announce_validator.ex @@ -6,9 +6,10 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do    use Ecto.Schema    alias Pleroma.Web.ActivityPub.ObjectValidators.Types +  alias Pleroma.Web.ActivityPub.Utils -  import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations    import Ecto.Changeset +  import Pleroma.Web.ActivityPub.ObjectValidators.CommonValidations    @primary_key false @@ -49,5 +50,19 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.AnnounceValidator do      |> validate_required([:id, :type, :object, :actor, :context, :to, :cc])      |> validate_actor_presence()      |> validate_object_presence() +    |> validate_existing_announce() +  end + +  def validate_existing_announce(cng) do +    actor = get_field(cng, :actor) +    object = get_field(cng, :object) + +    if actor && object && Utils.get_existing_announce(actor, %{data: %{"id" => object}}) do +      cng +      |> add_error(:actor, "already announced this object") +      |> add_error(:object, "already announced by this actor") +    else +      cng +    end    end  end | 
