diff options
author | lain <lain@soykaf.club> | 2020-05-20 11:43:49 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-05-20 11:43:49 +0000 |
commit | 423ea497bb2a7225f4f0d0e1ebff93466b3ec124 (patch) | |
tree | 635a88c98b28451b01bb5ed8bf5a247792b71d60 /lib | |
parent | 67844a8b11e7b921375f184afd1410a42c342d0f (diff) | |
parent | 287f781808c88f43f5689508b5aa21f6639b9d16 (diff) | |
download | pleroma-423ea497bb2a7225f4f0d0e1ebff93466b3ec124.tar.gz |
Merge branch 'feature/1734-user-deletion' into 'develop'
User deletion
Closes #1734
See merge request pleroma/pleroma!2493
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 6ca1e9a79..e8013bf40 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1432,6 +1432,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()} @@ -1453,14 +1472,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) |