aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorIvan Tashkinov <ivantashkinov@gmail.com>2020-07-07 20:37:11 +0300
committerIvan Tashkinov <ivantashkinov@gmail.com>2020-07-07 20:37:11 +0300
commit3e08e7715126ca1f3bfaf7dddf4806e76d9bd993 (patch)
tree8dc99a53ef52bfc83fb7c72089e396ed81ec34aa /lib
parent4b53499bdcd8df59c30c0326eebfe30a7a13161e (diff)
downloadpleroma-3e08e7715126ca1f3bfaf7dddf4806e76d9bd993.tar.gz
[#1895] Made hashtag timeline respect `:restrict_unauthenticated` instance setting.
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex43
1 files changed, 27 insertions, 16 deletions
diff --git a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex
index 4bdd46d7e..4bbb82c23 100644
--- a/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex
+++ b/lib/pleroma/web/mastodon_api/controllers/timeline_controller.ex
@@ -88,21 +88,23 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do
)
end
- # GET /api/v1/timelines/public
- def public(%{assigns: %{user: user}} = conn, params) do
- local_only = params[:local]
-
- cfg_key =
+ defp restrict_unauthenticated?(local_only) do
+ config_key =
if local_only do
:local
else
:federated
end
- restrict? = Pleroma.Config.get([:restrict_unauthenticated, :timelines, cfg_key])
+ Pleroma.Config.get([:restrict_unauthenticated, :timelines, config_key])
+ end
+
+ # GET /api/v1/timelines/public
+ def public(%{assigns: %{user: user}} = conn, params) do
+ local_only = params[:local]
- if restrict? and is_nil(user) do
- render_error(conn, :unauthorized, "authorization required for timeline view")
+ if is_nil(user) and restrict_unauthenticated?(local_only) do
+ fail_on_bad_auth(conn)
else
activities =
params
@@ -123,6 +125,10 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do
end
end
+ defp fail_on_bad_auth(conn) do
+ render_error(conn, :unauthorized, "authorization required for timeline view")
+ end
+
defp hashtag_fetching(params, user, local_only) do
tags =
[params[:tag], params[:any]]
@@ -157,15 +163,20 @@ defmodule Pleroma.Web.MastodonAPI.TimelineController do
# GET /api/v1/timelines/tag/:tag
def hashtag(%{assigns: %{user: user}} = conn, params) do
local_only = params[:local]
- activities = hashtag_fetching(params, user, local_only)
- conn
- |> add_link_headers(activities, %{"local" => local_only})
- |> render("index.json",
- activities: activities,
- for: user,
- as: :activity
- )
+ if is_nil(user) and restrict_unauthenticated?(local_only) do
+ fail_on_bad_auth(conn)
+ else
+ activities = hashtag_fetching(params, user, local_only)
+
+ conn
+ |> add_link_headers(activities, %{"local" => local_only})
+ |> render("index.json",
+ activities: activities,
+ for: user,
+ as: :activity
+ )
+ end
end
# GET /api/v1/timelines/list/:list_id