diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/web/admin_api/admin_api_controller.ex | 13 | 
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/pleroma/web/admin_api/admin_api_controller.ex b/lib/pleroma/web/admin_api/admin_api_controller.ex index 9f1fd3aeb..9c5fbfc5d 100644 --- a/lib/pleroma/web/admin_api/admin_api_controller.ex +++ b/lib/pleroma/web/admin_api/admin_api_controller.ex @@ -949,7 +949,8 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do    def config_update(conn, %{"configs" => configs}) do      with :ok <- configurable_from_database(conn) do        {_errors, results} = -        Enum.map(configs, fn +        Enum.filter(configs, &whitelisted_config?/1) +        |> Enum.map(fn            %{"group" => group, "key" => key, "delete" => true} = params ->              ConfigDB.delete(%{group: group, key: key, subkeys: params["subkeys"]}) @@ -1011,6 +1012,16 @@ defmodule Pleroma.Web.AdminAPI.AdminAPIController do      end    end +  defp whitelisted_config?(%{"group" => group, "key" => 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) +      end) +    else +      true +    end +  end +    def reload_emoji(conn, _params) do      Pleroma.Emoji.reload()  | 
