diff options
author | rinpatch <rinpatch@sdf.org> | 2020-04-29 14:26:31 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2020-05-01 00:38:58 +0300 |
commit | 61889e00fc4a77e92ed7af3b6a270d10d5b2f34b (patch) | |
tree | 05eadfdac17a8c6cb2e01a8fcb5b1a9558319f74 /lib | |
parent | 3b15a0eecc62f79465620a697f12b576ed87b0fc (diff) | |
download | pleroma-61889e00fc4a77e92ed7af3b6a270d10d5b2f34b.tar.gz |
Deactivate local users on deletion instead of deleting the record
Prevents the possibility of re-registration, which allowed to read
DMs of the deleted account.
Also includes a migration that tries to find any already deleted
accounts and insert skeletons for them.
Closes pleroma/pleroma#1687
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/user.ex | 11 | ||||
-rw-r--r-- | lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex | 5 |
2 files changed, 13 insertions, 3 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 0115abed5..0e5121694 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -1416,8 +1416,15 @@ defmodule Pleroma.User do end) delete_user_activities(user) - invalidate_cache(user) - Repo.delete(user) + + if user.local do + user + |> change(%{deactivated: true, email: nil}) + |> update_and_set_cache() + else + invalidate_cache(user) + Repo.delete(user) + end end def perform(:deactivate_async, user, status), do: deactivate(user, status) diff --git a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex index dae7f0f2f..41677d04d 100644 --- a/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex +++ b/lib/pleroma/web/pleroma_api/controllers/pleroma_api_controller.ex @@ -53,7 +53,10 @@ defmodule Pleroma.Web.PleromaAPI.PleromaAPIController do else users = Enum.map(user_ap_ids, &User.get_cached_by_ap_id/1) - |> Enum.filter(& &1) + |> Enum.filter(fn + %{deactivated: false} -> true + _ -> false + end) %{ name: emoji, |