diff --git a/apps/emqx_authz/src/emqx_authz.erl b/apps/emqx_authz/src/emqx_authz.erl index 54438793b..97e0fb595 100644 --- a/apps/emqx_authz/src/emqx_authz.erl +++ b/apps/emqx_authz/src/emqx_authz.erl @@ -33,7 +33,6 @@ , move/2 , move/3 , update/2 - , update/3 , authorize/5 ]). @@ -114,24 +113,18 @@ move(Type, Cmd) -> move(Type, Cmd, #{}). move(Type, #{<<"before">> := Before}, Opts) -> - emqx:update_config( ?CONF_KEY_PATH - , {?CMD_MOVE, type(Type), ?CMD_MOVE_BEFORE(type(Before))}, Opts); + emqx_authz_utils:update_config(?CONF_KEY_PATH, {?CMD_MOVE, type(Type), ?CMD_MOVE_BEFORE(type(Before))}, Opts); move(Type, #{<<"after">> := After}, Opts) -> - emqx:update_config( ?CONF_KEY_PATH - , {?CMD_MOVE, type(Type), ?CMD_MOVE_AFTER(type(After))}, Opts); + emqx_authz_utils:update_config(?CONF_KEY_PATH, {?CMD_MOVE, type(Type), ?CMD_MOVE_AFTER(type(After))}, Opts); move(Type, Position, Opts) -> - emqx:update_config( ?CONF_KEY_PATH - , {?CMD_MOVE, type(Type), Position}, Opts). + emqx_authz_utils:update_config(?CONF_KEY_PATH, {?CMD_MOVE, type(Type), Position}, Opts). +update({?CMD_REPLACE, Type}, Sources) -> + emqx_authz_utils:update_config(?CONF_KEY_PATH, {{?CMD_REPLACE, type(Type)}, Sources}); +update({?CMD_DELETE, Type}, Sources) -> + emqx_authz_utils:update_config(?CONF_KEY_PATH, {{?CMD_DELETE, type(Type)}, Sources}); update(Cmd, Sources) -> - update(Cmd, Sources, #{}). - -update({?CMD_REPLACE, Type}, Sources, Opts) -> - emqx:update_config(?CONF_KEY_PATH, {{?CMD_REPLACE, type(Type)}, Sources}, Opts); -update({?CMD_DELETE, Type}, Sources, Opts) -> - emqx:update_config(?CONF_KEY_PATH, {{?CMD_DELETE, type(Type)}, Sources}, Opts); -update(Cmd, Sources, Opts) -> - emqx:update_config(?CONF_KEY_PATH, {Cmd, Sources}, Opts). + emqx_authz_utils:update_config(?CONF_KEY_PATH, {Cmd, Sources}). do_update({?CMD_MOVE, Type, ?CMD_MOVE_TOP}, Conf) when is_list(Conf) -> {Source, Front, Rear} = take(Type, Conf), @@ -155,8 +148,8 @@ do_update({?CMD_APPEND, Sources}, Conf) when is_list(Sources), is_list(Conf) -> NConf = Conf ++ Sources, ok = check_dup_types(NConf), NConf; -do_update({{?CMD_REPLACE, Type}, #{<<"enable">> := true} = Source}, Conf) when is_map(Source), - is_list(Conf) -> +do_update({{?CMD_REPLACE, Type}, #{<<"enable">> := true} = Source}, Conf) + when is_map(Source), is_list(Conf) -> case create_dry_run(Type, Source) of ok -> {_Old, Front, Rear} = take(Type, Conf), @@ -165,7 +158,8 @@ do_update({{?CMD_REPLACE, Type}, #{<<"enable">> := true} = Source}, Conf) when i NConf; {error, _} = Error -> Error end; -do_update({{?CMD_REPLACE, Type}, Source}, Conf) when is_map(Source), is_list(Conf) -> +do_update({{?CMD_REPLACE, Type}, Source}, Conf) + when is_map(Source), is_list(Conf) -> {_Old, Front, Rear} = take(Type, Conf), NConf = Front ++ [Source | Rear], ok = check_dup_types(NConf), diff --git a/apps/emqx_authz/src/emqx_authz_api_settings.erl b/apps/emqx_authz/src/emqx_authz_api_settings.erl index c2a87da16..c7d75bbba 100644 --- a/apps/emqx_authz/src/emqx_authz_api_settings.erl +++ b/apps/emqx_authz/src/emqx_authz_api_settings.erl @@ -54,8 +54,9 @@ settings(get, _Params) -> settings(put, #{body := #{<<"no_match">> := NoMatch, <<"deny_action">> := DenyAction, <<"cache">> := Cache}}) -> - {ok, _} = emqx:update_config([authorization, no_match], NoMatch), - {ok, _} = emqx:update_config([authorization, deny_action], DenyAction), - {ok, _} = emqx:update_config([authorization, cache], Cache), + {ok, _} = emqx_authz_utils:update_config([authorization, no_match], NoMatch), + {ok, _} = emqx_authz_utils:update_config( + [authorization, deny_action], DenyAction), + {ok, _} = emqx_authz_utils:update_config([authorization, cache], Cache), ok = emqx_authz_cache:drain_cache(), {200, authorization_settings()}. diff --git a/apps/emqx_authz/src/emqx_authz_utils.erl b/apps/emqx_authz/src/emqx_authz_utils.erl index 73132aacb..78140d118 100644 --- a/apps/emqx_authz/src/emqx_authz_utils.erl +++ b/apps/emqx_authz/src/emqx_authz_utils.erl @@ -18,9 +18,11 @@ -include_lib("emqx/include/emqx_placeholder.hrl"). --export([cleanup_resources/0, - make_resource_id/1, - create_resource/2]). +-export([ cleanup_resources/0 + , make_resource_id/1 + , create_resource/2 + , update_config/2 + ]). -define(RESOURCE_GROUP, <<"emqx_authz">>). @@ -45,6 +47,10 @@ make_resource_id(Name) -> NameBin = bin(Name), emqx_resource:generate_id(?RESOURCE_GROUP, NameBin). +update_config(Path, ConfigRequest) -> + emqx_conf:update(Path, ConfigRequest, #{rawconf_with_defaults => true, + override_to => cluster}). + %%------------------------------------------------------------------------------ %% Internal functions %%------------------------------------------------------------------------------