aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorlain <lain@soykaf.club>2020-08-18 11:31:13 +0000
committerlain <lain@soykaf.club>2020-08-18 11:31:13 +0000
commit566749f77ad5291e28e2a90e32c39637149bdd01 (patch)
tree9c1d20c8bb8cc6bd8267bb2c1680f74f3a1394e5 /lib
parent42ce7a4bab454f4b1ba41eedfac19b1050cd111d (diff)
parenta0f5eb1a552cf161f0efb746d74c4c590de4f02f (diff)
downloadpleroma-566749f77ad5291e28e2a90e32c39637149bdd01.tar.gz
Merge branch 'purge-user' into 'develop'
Purge a local user upon deletion, fixes #2062 Closes #2062 See merge request pleroma/pleroma!2898
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/user.ex45
1 files changed, 44 insertions, 1 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex
index ac065e9dc..a9820affa 100644
--- a/lib/pleroma/user.ex
+++ b/lib/pleroma/user.ex
@@ -1583,6 +1583,49 @@ defmodule Pleroma.User do
|> update_and_set_cache()
end
+ @spec purge_user_changeset(User.t()) :: Changeset.t()
+ def purge_user_changeset(user) do
+ # "Right to be forgotten"
+ # https://gdpr.eu/right-to-be-forgotten/
+ change(user, %{
+ bio: nil,
+ raw_bio: nil,
+ email: nil,
+ name: nil,
+ password_hash: nil,
+ keys: nil,
+ public_key: nil,
+ avatar: %{},
+ tags: [],
+ last_refreshed_at: nil,
+ last_digest_emailed_at: nil,
+ banner: %{},
+ background: %{},
+ note_count: 0,
+ follower_count: 0,
+ following_count: 0,
+ locked: false,
+ confirmation_pending: false,
+ password_reset_pending: false,
+ approval_pending: false,
+ registration_reason: nil,
+ confirmation_token: nil,
+ domain_blocks: [],
+ deactivated: true,
+ ap_enabled: false,
+ is_moderator: false,
+ is_admin: false,
+ mastofe_settings: nil,
+ mascot: nil,
+ emoji: %{},
+ pleroma_settings_store: %{},
+ fields: [],
+ raw_fields: [],
+ discoverable: false,
+ also_known_as: []
+ })
+ end
+
def delete(users) when is_list(users) do
for user <- users, do: delete(user)
end
@@ -1610,7 +1653,7 @@ defmodule Pleroma.User do
_ ->
user
- |> change(%{deactivated: true, email: nil})
+ |> purge_user_changeset()
|> update_and_set_cache()
end
end