Merge branch 'fix/admin-api-user-deletion' into 'develop'
Fix deactivated user deletion See merge request pleroma/pleroma!1546
This commit is contained in:
commit
74f7f308f8
3 changed files with 14 additions and 6 deletions
|
@ -46,6 +46,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
||||||
- MRF: ensure that subdomain_match calls are case-insensitive
|
- MRF: ensure that subdomain_match calls are case-insensitive
|
||||||
- Reverse Proxy limiting `max_body_length` was incorrectly defined and only checked `Content-Length` headers which may not be sufficient in some circumstances
|
- Reverse Proxy limiting `max_body_length` was incorrectly defined and only checked `Content-Length` headers which may not be sufficient in some circumstances
|
||||||
- MRF: fix use of unserializable keyword lists in describe() implementations
|
- MRF: fix use of unserializable keyword lists in describe() implementations
|
||||||
|
- ActivityPub: Deactivated user deletion
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Conversations: Add Pleroma-specific conversation endpoints and status posting extensions. Run the `bump_all_conversations` task again to create the necessary data.
|
- Conversations: Add Pleroma-specific conversation endpoints and status posting extensions. Run the `bump_all_conversations` task again to create the necessary data.
|
||||||
|
|
|
@ -65,12 +65,12 @@ defp check_actor_is_active(actor) do
|
||||||
if not is_nil(actor) do
|
if not is_nil(actor) do
|
||||||
with user <- User.get_cached_by_ap_id(actor),
|
with user <- User.get_cached_by_ap_id(actor),
|
||||||
false <- user.info.deactivated do
|
false <- user.info.deactivated do
|
||||||
:ok
|
true
|
||||||
else
|
else
|
||||||
_e -> :reject
|
_e -> false
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
:ok
|
true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -119,10 +119,10 @@ def increase_poll_votes_if_vote(%{
|
||||||
|
|
||||||
def increase_poll_votes_if_vote(_create_data), do: :noop
|
def increase_poll_votes_if_vote(_create_data), do: :noop
|
||||||
|
|
||||||
def insert(map, local \\ true, fake \\ false) when is_map(map) do
|
def insert(map, local \\ true, fake \\ false, bypass_actor_check \\ false) when is_map(map) do
|
||||||
with nil <- Activity.normalize(map),
|
with nil <- Activity.normalize(map),
|
||||||
map <- lazy_put_activity_defaults(map, fake),
|
map <- lazy_put_activity_defaults(map, fake),
|
||||||
:ok <- check_actor_is_active(map["actor"]),
|
true <- bypass_actor_check || check_actor_is_active(map["actor"]),
|
||||||
{_, true} <- {:remote_limit_error, check_remote_limit(map)},
|
{_, true} <- {:remote_limit_error, check_remote_limit(map)},
|
||||||
{:ok, map} <- MRF.filter(map),
|
{:ok, map} <- MRF.filter(map),
|
||||||
{recipients, _, _} = get_recipients(map),
|
{recipients, _, _} = get_recipients(map),
|
||||||
|
@ -411,7 +411,7 @@ def delete(%User{ap_id: ap_id, follower_address: follower_address} = user) do
|
||||||
"actor" => ap_id,
|
"actor" => ap_id,
|
||||||
"object" => %{"type" => "Person", "id" => ap_id}
|
"object" => %{"type" => "Person", "id" => ap_id}
|
||||||
},
|
},
|
||||||
{:ok, activity} <- insert(data, true, true),
|
{:ok, activity} <- insert(data, true, true, true),
|
||||||
:ok <- maybe_federate(activity) do
|
:ok <- maybe_federate(activity) do
|
||||||
{:ok, user}
|
{:ok, user}
|
||||||
end
|
end
|
||||||
|
|
|
@ -1047,6 +1047,13 @@ test ".delete_user_activities deletes all create activities", %{user: user} do
|
||||||
refute Activity.get_by_id(activity.id)
|
refute Activity.get_by_id(activity.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it deletes deactivated user" do
|
||||||
|
{:ok, user} = insert(:user, info: %{deactivated: true}) |> User.set_cache()
|
||||||
|
|
||||||
|
assert {:ok, _} = User.delete(user)
|
||||||
|
refute User.get_by_id(user.id)
|
||||||
|
end
|
||||||
|
|
||||||
test "it deletes a user, all follow relationships and all activities", %{user: user} do
|
test "it deletes a user, all follow relationships and all activities", %{user: user} do
|
||||||
follower = insert(:user)
|
follower = insert(:user)
|
||||||
{:ok, follower} = User.follow(follower, user)
|
{:ok, follower} = User.follow(follower, user)
|
||||||
|
|
Loading…
Reference in a new issue