Переглянути джерело

Correctly purge a remote user

features/ingestion-unfollow
Alex Gleason 2 роки тому
джерело
коміт
be2da95c36
Не вдалося знайти GPG ключ що відповідає даному підпису Ідентифікатор GPG ключа: 7211D1F99744FBB7
2 змінених файлів з 28 додано та 6 видалено
  1. +10
    -6
      lib/pleroma/user.ex
  2. +18
    -0
      test/pleroma/user_test.exs

+ 10
- 6
lib/pleroma/user.ex Переглянути файл

@@ -1713,6 +1713,12 @@ defmodule Pleroma.User do
})
end

def purge(%User{} = user) do
user
|> purge_user_changeset()
|> update_and_set_cache()
end

def delete(users) when is_list(users) do
for user <- users, do: delete(user)
end
@@ -1726,9 +1732,9 @@ defmodule Pleroma.User do
Repo.delete(user)
end

defp delete_or_deactivate(%User{local: false} = user), do: delete_and_invalidate_cache(user)
defp delete_or_purge(%User{local: false} = user), do: purge(user)

defp delete_or_deactivate(%User{local: true} = user) do
defp delete_or_purge(%User{local: true} = user) do
status = account_status(user)

case status do
@@ -1739,9 +1745,7 @@ defmodule Pleroma.User do
delete_and_invalidate_cache(user)

_ ->
user
|> purge_user_changeset()
|> update_and_set_cache()
purge(user)
end
end

@@ -1769,7 +1773,7 @@ defmodule Pleroma.User do

delete_outgoing_pending_follow_requests(user)

delete_or_deactivate(user)
delete_or_purge(user)
end

def perform(:set_activation_async, user, status), do: set_activation(user, status)


+ 18
- 0
test/pleroma/user_test.exs Переглянути файл

@@ -1684,6 +1684,24 @@ defmodule Pleroma.UserTest do
} = user
end

test "delete/1 purges a remote user" do
user =
insert(:user, %{
name: "qqqqqqq",
avatar: %{"a" => "b"},
banner: %{"a" => "b"},
local: false
})

{:ok, job} = User.delete(user)
{:ok, _} = ObanHelpers.perform(job)
user = User.get_by_id(user.id)

assert user.name == nil
assert user.avatar == %{}
assert user.banner == %{}
end

test "get_public_key_for_ap_id fetches a user that's not in the db" do
assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin")
end


Завантаження…
Відмінити
Зберегти