diff options
author | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-05-08 16:54:53 +0300 |
---|---|---|
committer | Alexander Strizhakov <alex.strizhakov@gmail.com> | 2020-05-08 17:11:17 +0300 |
commit | 287f781808c88f43f5689508b5aa21f6639b9d16 (patch) | |
tree | e8aa008b2446f5c4170cd6f9ea6b7701e31dd98b /lib | |
parent | fbcc53760e6fcd393513c05a5bd7a4a6a6f3b731 (diff) | |
download | pleroma-287f781808c88f43f5689508b5aa21f6639b9d16.tar.gz |
user deletion
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/user.ex | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 2a6a23fec..278129ad2 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1431,6 +1431,25 @@ defmodule Pleroma.User do BackgroundWorker.enqueue("delete_user", %{"user_id" => user.id}) end + defp delete_and_invalidate_cache(%User{} = user) do + invalidate_cache(user) + Repo.delete(user) + end + + defp delete_or_deactivate(%User{local: false} = user), do: delete_and_invalidate_cache(user) + + defp delete_or_deactivate(%User{local: true} = user) do + status = account_status(user) + + if status == :confirmation_pending do + delete_and_invalidate_cache(user) + else + user + |> change(%{deactivated: true, email: nil}) + |> update_and_set_cache() + end + end + def perform(:force_password_reset, user), do: force_password_reset(user) @spec perform(atom(), User.t()) :: {:ok, User.t()} @@ -1452,14 +1471,7 @@ defmodule Pleroma.User do delete_user_activities(user) - if user.local do - user - |> change(%{deactivated: true, email: nil}) - |> update_and_set_cache() - else - invalidate_cache(user) - Repo.delete(user) - end + delete_or_deactivate(user) end def perform(:deactivate_async, user, status), do: deactivate(user, status) |