Move checking for restrict_local to User.get_cached_by_id_or_nickname

This commit is contained in:
rinpatch 2019-09-05 15:33:49 +03:00
parent cc1d1ee406
commit 26fe6f70c9
2 changed files with 16 additions and 27 deletions

View file

@ -570,10 +570,20 @@ def get_cached_by_nickname(nickname) 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

View file

@ -290,7 +290,7 @@ def verify_app_credentials(%{assigns: %{user: _user, token: token}} = conn, _) d
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 @@ def public_timeline(%{assigns: %{user: user}} = conn, params) 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 @@ def try_render(conn, _, _) 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