fix: split comparison for acct uri and nickname

This commit is contained in:
kPherox 2024-03-06 18:49:29 +09:00
parent 02d195f674
commit 57e7ab96e7
No known key found for this signature in database
GPG key ID: C04751C2BFA2F62D

View file

@ -460,12 +460,11 @@ defmodule Mix.Tasks.Pleroma.User do
with {_, %User{} = before_user} <- {:before, User.get_cached_by_nickname(nickname)},
{_, {:ok, %{"ap_id" => ap_id, "subject" => "acct:" <> acct}}} when not is_nil(ap_id) <-
{:webfinger, Pleroma.Web.WebFinger.finger(nickname)},
{_, true, _, _} <- {:acct_uri_comparison, nickname == acct, ap_id, acct},
{_, %User{} = current_user} <- {:current, User.get_cached_by_ap_id(ap_id)},
{_, false, false, _, _} <-
{:nickname_comparison, nickname == current_user.nickname,
acct == current_user.nickname, ap_id, acct},
{_, false, _} <-
{:ap_id_comparison, before_user.ap_id == current_user.ap_id, current_user.ap_id} do
{:ap_id_comparison, before_user.ap_id == current_user.ap_id, current_user.ap_id},
{_, false, _} <- {:nickname_comparison, nickname == current_user.nickname, ap_id} do
shell_info(
"Found an before user for #{nickname}, the before ap id is #{before_user.ap_id}, current one is #{current_user.ap_id}, renaming."
)
@ -484,18 +483,18 @@ defmodule Mix.Tasks.Pleroma.User do
{x, _} when x in [:current, :webfinger] ->
shell_error("Not found remote users for #{nickname}")
{:nickname_comparison, true, _, ap_id, _} ->
shell_info(
"Found a user for #{nickname}, but the ap id #{ap_id} is the same as the current user. Race condition? Not changing anything."
)
{:nickname_comparison, false, true, ap_id, acct} ->
{:acct_uri_comparison, false, ap_id, acct} ->
shell_info(
"Found a user for #{nickname}, but the ap id #{ap_id} is current nickname #{acct}. Not changing anything."
)
{:ap_id_comparison, true, ap_id} ->
shell_info("Found a user for #{nickname}. Correct ap id #{ap_id}.")
{:nickname_comparison, true, ap_id} ->
shell_info(
"Found a user for #{nickname}, but the ap id #{ap_id} is the same as the current user. Race condition? Not changing anything."
)
end
end