From 0277b4e88c3f36d152226ab57b0b02238e8db6ab Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Sun, 24 Sep 2023 12:24:47 -0500 Subject: [PATCH] InstanceView: expose restrict_unauthenticated settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: nicole mikołajczyk --- .../web/mastodon_api/views/instance_view.ex | 18 +++++++++++++++++- .../controllers/instance_controller_test.exs | 10 ++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/lib/pleroma/web/mastodon_api/views/instance_view.ex b/lib/pleroma/web/mastodon_api/views/instance_view.ex index 1b6f26af72..5ff2496c4c 100644 --- a/lib/pleroma/web/mastodon_api/views/instance_view.ex +++ b/lib/pleroma/web/mastodon_api/views/instance_view.ex @@ -261,6 +261,21 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do }) end + defp restrict_unauthenticated do + Config.get([:restrict_unauthenticated]) + |> Enum.map(fn {category, features} -> + features = + Enum.map(features, fn + {feature, is_enabled} when is_boolean(is_enabled) -> {feature, is_enabled} + {feature, :if_instance_is_private} -> {feature, !Config.get!([:instance, :public])} + end) + |> Enum.into(%{}) + + {category, features} + end) + |> Enum.into(%{}) + end + defp pleroma_configuration(instance) do base_urls = %{} @@ -288,7 +303,8 @@ defmodule Pleroma.Web.MastodonAPI.InstanceView do birthday_min_age: Config.get([:instance, :birthday_min_age]), translation: supported_languages(), base_urls: base_urls, - markup: markup() + markup: markup(), + restrict_unauthenticated: restrict_unauthenticated() }, stats: %{mau: Pleroma.User.active_user_count()}, vapid_public_key: Keyword.get(Pleroma.Web.Push.vapid_config(), :public_key) diff --git a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs index 8a0fe52598..39b60c685f 100644 --- a/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs +++ b/test/pleroma/web/mastodon_api/controllers/instance_controller_test.exs @@ -194,4 +194,14 @@ defmodule Pleroma.Web.MastodonAPI.InstanceControllerTest do refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "media_proxy") refute Map.has_key?(result["pleroma"]["metadata"]["base_urls"], "upload") end + + test "restrict_unauthenticated", %{conn: conn} do + result = + conn + |> get("/api/v1/instance") + |> json_response_and_validate_schema(200) + + assert result["pleroma"]["metadata"]["restrict_unauthenticated"]["timelines"]["local"] == + false + end end