fix(emqx_authz_api_mnesia): return the right matchers

This commit is contained in:
Zaiming (Stone) Shi 2022-11-24 17:56:14 +01:00
parent dbdb78d38a
commit 6ee475d9b1
2 changed files with 32 additions and 22 deletions

View File

@ -578,13 +578,19 @@ purge(delete, _) ->
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% QueryString to MatchSpec %% QueryString to MatchSpec
-spec query_username(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}. -spec query_username(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
query_username(_Tab, {_QString, FuzzyQString}) -> query_username(_Tab, {_QString, FuzzyQString}) ->
{emqx_authz_mnesia:list_username_rules(), fuzzy_filter_fun(FuzzyQString)}. #{
match_spec => emqx_authz_mnesia:list_username_rules(),
fuzzy_fun => fuzzy_filter_fun(FuzzyQString)
}.
-spec query_clientid(atom(), {list(), list()}) -> {ets:match_spec(), fun() | undefined}. -spec query_clientid(atom(), {list(), list()}) -> emqx_mgmt_api:match_spec_and_filter().
query_clientid(_Tab, {_QString, FuzzyQString}) -> query_clientid(_Tab, {_QString, FuzzyQString}) ->
{emqx_authz_mnesia:list_clientid_rules(), fuzzy_filter_fun(FuzzyQString)}. #{
match_spec => emqx_authz_mnesia:list_clientid_rules(),
fuzzy_fun => fuzzy_filter_fun(FuzzyQString)
}.
%% Fuzzy username funcs %% Fuzzy username funcs
fuzzy_filter_fun([]) -> fuzzy_filter_fun([]) ->

View File

@ -35,6 +35,28 @@
b2i/1 b2i/1
]). ]).
-export_type([
match_spec_and_filter/0
]).
-type query_params() :: list() | map().
-type query_schema() :: [
{Key :: binary(), Type :: atom | binary | integer | timestamp | ip | ip_port}
].
-type query_to_match_spec_fun() :: fun((list(), list()) -> match_spec_and_filter()).
-type match_spec_and_filter() :: #{match_spec := ets:match_spec(), fuzzy_fun := fuzzy_filter_fun()}.
-type fuzzy_filter_fun() :: undefined | {fun(), list()}.
-type format_result_fun() ::
fun((node(), term()) -> term())
| fun((term()) -> term()).
-type query_return() :: #{meta := map(), data := [term()]}.
-export([do_query/2, apply_total_query/1]). -export([do_query/2, apply_total_query/1]).
paginate(Tables, Params, {Module, FormatFun}) -> paginate(Tables, Params, {Module, FormatFun}) ->
@ -121,24 +143,6 @@ limit(Params) ->
%% Node Query %% Node Query
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
-type query_params() :: list() | map().
-type query_schema() :: [
{Key :: binary(), Type :: atom | binary | integer | timestamp | ip | ip_port}
].
-type query_to_match_spec_fun() :: fun((list(), list()) -> match_spec_and_filter()).
-type match_spec_and_filter() :: #{match_spec := ets:match_spec(), fuzzy_fun := fuzzy_filter_fun()}.
-type fuzzy_filter_fun() :: undefined | {fun(), list()}.
-type format_result_fun() ::
fun((node(), term()) -> term())
| fun((term()) -> term()).
-type query_return() :: #{meta := map(), data := [term()]}.
-spec node_query( -spec node_query(
node(), node(),
atom(), atom(),