aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAlexander Strizhakov <alex.strizhakov@gmail.com>2020-05-08 16:54:53 +0300
committerAlexander Strizhakov <alex.strizhakov@gmail.com>2020-05-08 17:11:17 +0300
commit287f781808c88f43f5689508b5aa21f6639b9d16 (patch)
treee8aa008b2446f5c4170cd6f9ea6b7701e31dd98b /lib
parentfbcc53760e6fcd393513c05a5bd7a4a6a6f3b731 (diff)
downloadpleroma-287f781808c88f43f5689508b5aa21f6639b9d16.tar.gz
user deletion
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 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)