Browse Source

Allow whitelisting whole groups

bugfix/non-ap_enabled-direct_follow
Stephanie Wilde-Hobbs 4 years ago
parent
commit
20cbfb5cb5
No known key found for this signature in database GPG Key ID: CEF2BBFE18BD0E67
3 changed files with 20 additions and 8 deletions
  1. +2
    -1
      docs/configuration/cheatsheet.md
  2. +6
    -2
      lib/pleroma/web/admin_api/admin_api_controller.ex
  3. +12
    -5
      test/web/admin_api/admin_api_controller_test.exs

+ 2
- 1
docs/configuration/cheatsheet.md View File

@@ -919,7 +919,8 @@ Example:
```elixir
config :pleroma, :database_config_whitelist, [
{:pleroma, :instance},
{:pleroma, Pleroma.Web.Metadata}
{:pleroma, Pleroma.Web.Metadata},
{:auto_linker}
]
```



+ 6
- 2
lib/pleroma/web/admin_api/admin_api_controller.ex View File

@@ -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


+ 12
- 5
test/web/admin_api/admin_api_controller_test.exs View File

@@ -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



Loading…
Cancel
Save