aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-05-20 11:43:49 +0000
committerlain <lain@soykaf.club>2020-05-20 11:43:49 +0000
commit423ea497bb2a7225f4f0d0e1ebff93466b3ec124 (patch)
tree635a88c98b28451b01bb5ed8bf5a247792b71d60 /lib
parent67844a8b11e7b921375f184afd1410a42c342d0f (diff)
parent287f781808c88f43f5689508b5aa21f6639b9d16 (diff)
downloadpleroma-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.ex28
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)