aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma/web
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-09-03 17:54:21 +0300
committerrinpatch <rinpatch@sdf.org>2019-09-03 19:26:10 +0300
commitcc1d1ee4069c47d2e5e91347438b2a6c7bff86cf (patch)
tree879174193f46f6e4a1d641990c82725c8e4d4a60 /lib/pleroma/web
parent46ffd8b3b6359ec796733a8fff5bdb7d03a728d5 (diff)
downloadpleroma-cc1d1ee4069c47d2e5e91347438b2a6c7bff86cf.tar.gz
Mastdon API: Add ability to get a remote account by nickname to
`/api/v1/accounts/:id`
Diffstat (limited to 'lib/pleroma/web')
-rw-r--r--lib/pleroma/web/endpoint.ex2
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex25
2 files changed, 24 insertions, 3 deletions
diff --git a/lib/pleroma/web/endpoint.ex b/lib/pleroma/web/endpoint.ex
index c123530dc..eb805e853 100644
--- a/lib/pleroma/web/endpoint.ex
+++ b/lib/pleroma/web/endpoint.ex
@@ -57,7 +57,7 @@ defmodule Pleroma.Web.Endpoint do
plug(Phoenix.CodeReloader)
end
- plug(TrailingFormatPlug)
+ plug(Pleroma.Plugs.TrailingFormatPlug)
plug(Plug.RequestId)
plug(Plug.Logger)
diff --git a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
index 83e877c0e..c5f281976 100644
--- a/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/mastodon_api_controller.ex
@@ -290,7 +290,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
def user(%{assigns: %{user: for_user}} = conn, %{"id" => nickname_or_id}) do
- with %User{} = user <- User.get_cached_by_nickname_or_id(nickname_or_id),
+ with %User{} = user <- get_user_by_nickname_or_id(for_user, nickname_or_id),
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})
json(conn, account)
@@ -390,7 +390,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
end
def user_statuses(%{assigns: %{user: reading_user}} = conn, params) do
- with %User{} = user <- User.get_cached_by_nickname_or_id(params["id"]) do
+ with %User{} = user <- get_user_by_nickname_or_id(reading_user, params["id"]) do
params =
params
|> Map.put("tag", params["tagged"])
@@ -1697,4 +1697,25 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
defp present?(nil), do: false
defp present?(false), do: false
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