فهرست منبع

fix(emqx_authz_api_mnesia): return the right matchers

Zaiming (Stone) Shi 3 سال پیش
والد
کامیت
6ee475d9b1
2فایلهای تغییر یافته به همراه32 افزوده شده و 22 حذف شده
  1. 10 4
      apps/emqx_authz/src/emqx_authz_api_mnesia.erl
  2. 22 18
      apps/emqx_management/src/emqx_mgmt_api.erl

+ 10 - 4
apps/emqx_authz/src/emqx_authz_api_mnesia.erl

@@ -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([]) ->

+ 22 - 18
apps/emqx_management/src/emqx_mgmt_api.erl

@@ -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(),