summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephanie Wilde-Hobbs <steph@rx14.co.uk>2020-05-14 12:34:46 +0100
committerStephanie Wilde-Hobbs <steph@rx14.co.uk>2020-05-14 12:43:53 +0100
commit20cbfb5cb5515044de03cc48e8464ec45ad0ca50 (patch)
tree6b9928508af096c241c2f0225e042f9a1548f00b
parent5c6f57531505f1e5e39836c0e0e6d2563fdaedf8 (diff)
Allow whitelisting whole groups
-rw-r--r--docs/configuration/cheatsheet.md3
-rw-r--r--lib/pleroma/web/admin_api/admin_api_controller.ex8
-rw-r--r--test/web/admin_api/admin_api_controller_test.exs17
3 files changed, 20 insertions, 8 deletions
diff --git a/docs/configuration/cheatsheet.md b/docs/configuration/cheatsheet.md
index 7b7a332c7..f0ecebc99 100644
--- a/docs/configuration/cheatsheet.md
+++ b/docs/configuration/cheatsheet.md
@@ -919,7 +919,8 @@ Example:
```elixir
config :pleroma, :database_config_whitelist, [
{:pleroma, :instance},
- {:pleroma, Pleroma.Web.Metadata}
+ {:pleroma, Pleroma.Web.Metadata},
+ {:auto_linker}
]
```
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex
index 3053f57a1..c996a2a5a 100644
--- a/lib/pleroma/web/admin_api/admin_api_controller.ex
+++ b/lib/pleroma/web/admin_api/admin_api_controller.ex
@@ -1015,8 +1015,12 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do
defp whitelisted_config?(group, key) do
if whitelisted_configs = Config.get(:database_config_whitelist) do
- Enum.any?(whitelisted_configs, fn {whitelisted_group, whitelisted_key} ->
- group == inspect(whitelisted_group) && key == inspect(whitelisted_key)
+ Enum.any?(whitelisted_configs, fn
+ {whitelisted_group} ->
+ group == inspect(whitelisted_group)
+
+ {whitelisted_group, whitelisted_key} ->
+ group == inspect(whitelisted_group) && key == inspect(whitelisted_key)
end)
else
true
diff --git a/test/web/admin_api/admin_api_controller_test.exs b/test/web/admin_api/admin_api_controller_test.exs
index 7d42a400c..e573220ba 100644
--- a/test/web/admin_api/admin_api_controller_test.exs
+++ b/test/web/admin_api/admin_api_controller_test.exs
@@ -2948,7 +2948,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
clear_config(:database_config_whitelist, [
{:pleroma, :key1},
{:pleroma, :key2},
- {:pleroma, Pleroma.Captcha.NotReal}
+ {:pleroma, Pleroma.Captcha.NotReal},
+ {:not_real}
])
post(conn, "/api/pleroma/admin/config", %{
@@ -2957,7 +2958,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
%{group: ":pleroma", key: ":key2", value: "value2"},
%{group: ":pleroma", key: ":key3", value: "value3"},
%{group: ":pleroma", key: "Pleroma.Web.Endpoint.NotReal", value: "value4"},
- %{group: ":pleroma", key: "Pleroma.Captcha.NotReal", value: "value5"}
+ %{group: ":pleroma", key: "Pleroma.Captcha.NotReal", value: "value5"},
+ %{group: ":not_real", key: ":anything", value: "value6"}
]
})
@@ -2966,6 +2968,7 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
assert Application.get_env(:pleroma, :key3) == nil
assert Application.get_env(:pleroma, Pleroma.Web.Endpoint.NotReal) == nil
assert Application.get_env(:pleroma, Pleroma.Captcha.NotReal) == "value5"
+ assert Application.get_env(:not_real, :anything) == "value6"
end
end
@@ -3624,7 +3627,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
clear_config(:database_config_whitelist, [
{:pleroma, :instance},
{:pleroma, :activitypub},
- {:pleroma, Pleroma.Upload}
+ {:pleroma, Pleroma.Upload},
+ {:esshd}
])
admin = insert(:user, is_admin: true)
@@ -3635,9 +3639,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
children = json_response(conn, 200)
- assert length(children) == 3
+ assert length(children) == 4
- assert Enum.all?(children, fn c -> c["group"] == ":pleroma" end)
+ assert Enum.count(children, fn c -> c["group"] == ":pleroma" end) == 3
instance = Enum.find(children, fn c -> c["key"] == ":instance" end)
assert instance["children"]
@@ -3647,6 +3651,9 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIControllerTest do
web_endpoint = Enum.find(children, fn c -> c["key"] == "Pleroma.Upload" end)
assert web_endpoint["children"]
+
+ esshd = Enum.find(children, fn c -> c["group"] == ":esshd" end)
+ assert esshd["children"]
end
end