X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fmix%2Ftasks%2Fpleroma%2Fuser.ex;h=b8d65b03eb52e762956d42da1052fe0a658af090;hb=be48c1bafb0765675012c71d79a41ac490a964b7;hp=d8400662d3fafbcb4bf5d957a80b4969673a6e2f;hpb=931d663a3a9da845b9f789ed9c2b5e35140df22f;p=akkoma diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index d8400662d..b8d65b03e 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -8,6 +8,8 @@ defmodule Mix.Tasks.Pleroma.User do alias Ecto.Changeset alias Pleroma.User alias Pleroma.UserInviteToken + alias Pleroma.Web.ActivityPub.Builder + alias Pleroma.Web.ActivityPub.Pipeline @shortdoc "Manages Pleroma users" @moduledoc File.read!("docs/administration/CLI_tasks/user.md") @@ -96,8 +98,9 @@ defmodule Mix.Tasks.Pleroma.User do def run(["rm", nickname]) do start_pleroma() - with %User{local: true} = user <- User.get_cached_by_nickname(nickname) do - User.perform(:delete, user) + with %User{local: true} = user <- User.get_cached_by_nickname(nickname), + {:ok, delete_data, _} <- Builder.delete(user, user.ap_id), + {:ok, _delete, _} <- Pipeline.common_pipeline(delete_data, local: true) do shell_info("User #{nickname} deleted.") else _ -> shell_error("No local user #{nickname}") @@ -141,28 +144,30 @@ defmodule Mix.Tasks.Pleroma.User do end end - def run(["unsubscribe", nickname]) do + def run(["reset_mfa", nickname]) do + start_pleroma() + + with %User{local: true} = user <- User.get_cached_by_nickname(nickname), + {:ok, _token} <- Pleroma.MFA.disable(user) do + shell_info("Multi-Factor Authentication disabled for #{user.nickname}") + else + _ -> + shell_error("No local user #{nickname}") + end + end + + def run(["deactivate", nickname]) do start_pleroma() with %User{} = user <- User.get_cached_by_nickname(nickname) do shell_info("Deactivating #{user.nickname}") User.deactivate(user) - - user - |> User.get_friends() - |> Enum.each(fn friend -> - user = User.get_cached_by_id(user.id) - - shell_info("Unsubscribing #{friend.nickname} from #{user.nickname}") - User.unfollow(user, friend) - end) - :timer.sleep(500) user = User.get_cached_by_id(user.id) - if Enum.empty?(User.get_friends(user)) do - shell_info("Successfully unsubscribed all followers from #{user.nickname}") + if Enum.empty?(Enum.filter(User.get_friends(user), & &1.local)) do + shell_info("Successfully unsubscribed all local followers from #{user.nickname}") end else _ -> @@ -170,7 +175,7 @@ defmodule Mix.Tasks.Pleroma.User do end end - def run(["unsubscribe_all_from_instance", instance]) do + def run(["deactivate_all_from_instance", instance]) do start_pleroma() Pleroma.User.Query.build(%{nickname: "@#{instance}"}) @@ -178,7 +183,7 @@ defmodule Mix.Tasks.Pleroma.User do |> Stream.each(fn users -> users |> Enum.each(fn user -> - run(["unsubscribe", user.nickname]) + run(["deactivate", user.nickname]) end) end) |> Stream.run() @@ -335,32 +340,36 @@ defmodule Mix.Tasks.Pleroma.User do def run(["change_email", nickname, email]) do start_pleroma() + with %User{} = user <- User.get_cached_by_nickname(nickname) do - user - |> User.update_changeset(%{"email" => email}) - |> User.update_and_set_cache() - shell_info("#{nickname}'s email updated") + user + |> User.update_changeset(%{"email" => email}) + |> User.update_and_set_cache() + + shell_info("#{nickname}'s email updated") end end def run(["show", nickname]) do start_pleroma() + nickname |> User.get_cached_by_nickname() - |> IO.inspect + |> IO.inspect() end def run(["send_confirmation", nickname]) do start_pleroma() + with %User{} = user <- User.get_cached_by_nickname(nickname) do - user - |> Pleroma.Emails.UserEmail.account_confirmation_email() - |> IO.inspect - |> Pleroma.Emails.Mailer.deliver!() - shell_info("#{nickname}'s email sent") + user + |> Pleroma.Emails.UserEmail.account_confirmation_email() + |> IO.inspect() + |> Pleroma.Emails.Mailer.deliver!() + + shell_info("#{nickname}'s email sent") end end - def run(["toggle_confirmed", nickname]) do start_pleroma()