mirror of
https://akkoma.dev/AkkomaGang/akkoma.git
synced 2024-11-11 03:39:13 +00:00
Move checking for restrict_local to User.get_cached_by_id_or_nickname
This commit is contained in:
parent
cc1d1ee406
commit
26fe6f70c9
2 changed files with 16 additions and 27 deletions
|
@ -570,10 +570,20 @@ defmodule Pleroma.User do
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_cached_by_nickname_or_id(nickname_or_id, opts \\ []) do
|
def get_cached_by_nickname_or_id(nickname_or_id, opts \\ []) do
|
||||||
if is_integer(nickname_or_id) or Pleroma.FlakeId.is_flake_id?(nickname_or_id) do
|
restrict_to_local = Pleroma.Config.get([:instance, :limit_to_local_content])
|
||||||
get_cached_by_id(nickname_or_id) || get_cached_by_nickname(nickname_or_id)
|
|
||||||
else
|
cond do
|
||||||
unless opts[:restrict_remote_nicknames], do: get_cached_by_nickname(nickname_or_id)
|
is_integer(nickname_or_id) or Pleroma.FlakeId.is_flake_id?(nickname_or_id) ->
|
||||||
|
get_cached_by_id(nickname_or_id) || get_cached_by_nickname(nickname_or_id)
|
||||||
|
|
||||||
|
restrict_to_local == false ->
|
||||||
|
get_cached_by_nickname(nickname_or_id)
|
||||||
|
|
||||||
|
restrict_to_local == :unauthenticated and match?(%User{}, opts[:for]) ->
|
||||||
|
get_cached_by_nickname(nickname_or_id)
|
||||||
|
|
||||||
|
true ->
|
||||||
|
nil
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -290,7 +290,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
end
|
end
|
||||||
|
|
||||||
def user(%{assigns: %{user: for_user}} = conn, %{"id" => nickname_or_id}) do
|
def user(%{assigns: %{user: for_user}} = conn, %{"id" => nickname_or_id}) do
|
||||||
with %User{} = user <- get_user_by_nickname_or_id(for_user, nickname_or_id),
|
with %User{} = user <- User.get_cached_by_nickname_or_id(nickname_or_id, for: for_user),
|
||||||
true <- User.auth_active?(user) || user.id == for_user.id || User.superuser?(for_user) do
|
true <- User.auth_active?(user) || user.id == for_user.id || User.superuser?(for_user) do
|
||||||
account = AccountView.render("account.json", %{user: user, for: for_user})
|
account = AccountView.render("account.json", %{user: user, for: for_user})
|
||||||
json(conn, account)
|
json(conn, account)
|
||||||
|
@ -390,7 +390,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
end
|
end
|
||||||
|
|
||||||
def user_statuses(%{assigns: %{user: reading_user}} = conn, params) do
|
def user_statuses(%{assigns: %{user: reading_user}} = conn, params) do
|
||||||
with %User{} = user <- get_user_by_nickname_or_id(reading_user, params["id"]) do
|
with %User{} = user <- User.get_cached_by_nickname_or_id(params["id"], for: reading_user) do
|
||||||
params =
|
params =
|
||||||
params
|
params
|
||||||
|> Map.put("tag", params["tagged"])
|
|> Map.put("tag", params["tagged"])
|
||||||
|
@ -1697,25 +1697,4 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
defp present?(nil), do: false
|
defp present?(nil), do: false
|
||||||
defp present?(false), do: false
|
defp present?(false), do: false
|
||||||
defp present?(_), do: true
|
defp present?(_), do: true
|
||||||
|
|
||||||
defp get_user_by_nickname_or_id(for_user, nickname_or_id) do
|
|
||||||
restrict_to_local = Pleroma.Config.get([:instance, :limit_to_local_content])
|
|
||||||
|
|
||||||
opts =
|
|
||||||
cond do
|
|
||||||
restrict_to_local == :all ->
|
|
||||||
[restrict_remote_nicknames: true]
|
|
||||||
|
|
||||||
restrict_to_local == false ->
|
|
||||||
[]
|
|
||||||
|
|
||||||
restrict_to_local == :unauthenticated and match?(%User{}, for_user) ->
|
|
||||||
[]
|
|
||||||
|
|
||||||
true ->
|
|
||||||
[restrict_remote_nicknames: true]
|
|
||||||
end
|
|
||||||
|
|
||||||
User.get_cached_by_nickname_or_id(nickname_or_id, opts)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue