From 628c55cd84bba7e4a88a28f2c49e38424d03f766 Mon Sep 17 00:00:00 2001 From: Thomas Citharel Date: Wed, 12 May 2021 11:02:46 +0200 Subject: [PATCH] Make sure relay and anonymous actors don't automatically approve followers Signed-off-by: Thomas Citharel --- lib/mobilizon/actors/actor.ex | 28 ++++++++++--------- ...4824_repair_relay_and_anonymous_actors.exs | 15 ++++++++++ 2 files changed, 30 insertions(+), 13 deletions(-) create mode 100644 priv/repo/migrations/20210512084824_repair_relay_and_anonymous_actors.exs diff --git a/lib/mobilizon/actors/actor.ex b/lib/mobilizon/actors/actor.ex index 49316bc89..1bfa41c31 100644 --- a/lib/mobilizon/actors/actor.ex +++ b/lib/mobilizon/actors/actor.ex @@ -416,17 +416,18 @@ defmodule Mobilizon.Actors.Actor do @spec build_relay_creation_attrs :: Ecto.Changeset.t() def build_relay_creation_attrs do data = %{ - "name" => Config.get([:instance, :name], "Mobilizon"), - "summary" => + name: Config.get([:instance, :name], "Mobilizon"), + summary: Config.get( [:instance, :description], "An internal service actor for this Mobilizon instance" ), - "keys" => Crypto.generate_rsa_2048_private_key(), - "preferred_username" => "relay", - "domain" => nil, - "visibility" => :public, - "type" => :Application + keys: Crypto.generate_rsa_2048_private_key(), + preferred_username: "relay", + domain: nil, + visibility: :public, + type: :Application, + manually_approves_followers: true } %__MODULE__{} @@ -440,12 +441,13 @@ defmodule Mobilizon.Actors.Actor do @spec build_anonymous_actor_creation_attrs :: Ecto.Changeset.t() def build_anonymous_actor_creation_attrs do data = %{ - "name" => "Mobilizon Anonymous Actor", - "summary" => "A fake person for anonymous participations", - "keys" => Crypto.generate_rsa_2048_private_key(), - "preferred_username" => "anonymous", - "domain" => nil, - "type" => :Person + name: "Mobilizon Anonymous Actor", + summary: "A fake person for anonymous participations", + keys: Crypto.generate_rsa_2048_private_key(), + preferred_username: "anonymous", + domain: nil, + type: :Person, + manually_approves_followers: true } %__MODULE__{} diff --git a/priv/repo/migrations/20210512084824_repair_relay_and_anonymous_actors.exs b/priv/repo/migrations/20210512084824_repair_relay_and_anonymous_actors.exs new file mode 100644 index 000000000..3a9827b2b --- /dev/null +++ b/priv/repo/migrations/20210512084824_repair_relay_and_anonymous_actors.exs @@ -0,0 +1,15 @@ +defmodule Mobilizon.Storage.Repo.Migrations.RepairRelayAndAnonymousActors do + use Ecto.Migration + + def up do + Ecto.Adapters.SQL.query!( + Mobilizon.Storage.Repo, + "UPDATE actors SET manually_approves_followers = true WHERE preferred_username = 'relay' and domain is null" + ) + + Ecto.Adapters.SQL.query!( + Mobilizon.Storage.Repo, + "UPDATE actors SET manually_approves_followers = true WHERE preferred_username = 'anonymous' and domain is null" + ) + end +end