forked from AkkomaGang/akkoma
51 lines
1.4 KiB
Elixir
51 lines
1.4 KiB
Elixir
defmodule Pleroma.Web.ActivityPub.MRF.RejectNewlyCreatedAccountNotesPolicy do
|
|
@behaviour Pleroma.Web.ActivityPub.MRF.Policy
|
|
|
|
alias Pleroma.User
|
|
|
|
@moduledoc """
|
|
Rejects notes from accounts that were created below a certain threshold of time ago
|
|
"""
|
|
@impl true
|
|
def filter(
|
|
%{
|
|
"type" => type,
|
|
"actor" => actor
|
|
} = activity
|
|
)
|
|
when type in ["Note", "Create"] do
|
|
min_age = Pleroma.Config.get([:mrf_reject_newly_created_account_notes, :age])
|
|
|
|
with %User{local: false} = user <- Pleroma.User.get_cached_by_ap_id(actor),
|
|
true <- Timex.diff(Timex.now(), user.inserted_at, :seconds) < min_age do
|
|
{:reject, "[RejectNewlyCreatedAccountNotesPolicy] Account created too recently"}
|
|
else
|
|
_ -> {:ok, activity}
|
|
end
|
|
end
|
|
|
|
@impl true
|
|
def filter(object), do: {:ok, object}
|
|
|
|
@impl true
|
|
def describe, do: {:ok, %{}}
|
|
|
|
@impl true
|
|
def config_description do
|
|
%{
|
|
key: :mrf_reject_newly_created_account_notes,
|
|
related_policy: "Pleroma.Web.ActivityPub.MRF.RejectNewlyCreatedAccountNotesPolicy",
|
|
label: "MRF Reject New Accounts",
|
|
description: "Reject notes from accounts created too recently",
|
|
children: [
|
|
%{
|
|
key: :age,
|
|
type: :integer,
|
|
description: "Time below which to reject (in seconds)",
|
|
suggestions: [86_400]
|
|
}
|
|
]
|
|
}
|
|
end
|
|
end
|