diff options
author | lain <lain@soykaf.club> | 2020-08-18 11:31:13 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2020-08-18 11:31:13 +0000 |
commit | 566749f77ad5291e28e2a90e32c39637149bdd01 (patch) | |
tree | 9c1d20c8bb8cc6bd8267bb2c1680f74f3a1394e5 /lib | |
parent | 42ce7a4bab454f4b1ba41eedfac19b1050cd111d (diff) | |
parent | a0f5eb1a552cf161f0efb746d74c4c590de4f02f (diff) | |
download | pleroma-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.ex | 45 |
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 |