Merge pull request #8046 from savonarola/fix-authn-user-search-api
fix(authn): fix user search API
This commit is contained in:
commit
26c83f40df
|
@ -204,25 +204,14 @@ emqx_authn_api {
|
|||
}
|
||||
}
|
||||
|
||||
like_username {
|
||||
like_user_id {
|
||||
desc {
|
||||
en: """Fuzzy search username."""
|
||||
zh: """使用用户名模糊查询。"""
|
||||
en: """Fuzzy search user_id (username or clientid)."""
|
||||
zh: """使用用户 ID (username 或 clientid)模糊查询。"""
|
||||
}
|
||||
label {
|
||||
en: """like_username"""
|
||||
zh: """模糊用户名"""
|
||||
}
|
||||
}
|
||||
|
||||
like_clientid {
|
||||
desc {
|
||||
en: """Fuzzy search clientid."""
|
||||
zh: """使用客户端标识符模糊查询。"""
|
||||
}
|
||||
label {
|
||||
en: """like_clientid"""
|
||||
zh: """模糊用户名"""
|
||||
en: """like_user_id"""
|
||||
zh: """like_user_id"""
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -429,16 +429,10 @@ schema("/authentication/:id/users") ->
|
|||
param_auth_id(),
|
||||
ref(emqx_dashboard_swagger, page),
|
||||
ref(emqx_dashboard_swagger, limit),
|
||||
{like_username,
|
||||
{like_user_id,
|
||||
mk(binary(), #{
|
||||
in => query,
|
||||
desc => ?DESC(like_username),
|
||||
required => false
|
||||
})},
|
||||
{like_clientid,
|
||||
mk(binary(), #{
|
||||
in => query,
|
||||
desc => ?DESC(like_clientid),
|
||||
desc => ?DESC(like_user_id),
|
||||
required => false
|
||||
})},
|
||||
{is_superuser,
|
||||
|
|
|
@ -69,8 +69,7 @@
|
|||
|
||||
-define(TAB, ?MODULE).
|
||||
-define(AUTHN_QSCHEMA, [
|
||||
{<<"like_username">>, binary},
|
||||
{<<"like_clientid">>, binary},
|
||||
{<<"like_user_id">>, binary},
|
||||
{<<"user_group">>, binary},
|
||||
{<<"is_superuser">>, atom}
|
||||
]).
|
||||
|
@ -319,14 +318,9 @@ run_fuzzy_filter(_, []) ->
|
|||
true;
|
||||
run_fuzzy_filter(
|
||||
E = #user_info{user_id = {_, UserID}},
|
||||
[{username, like, UsernameSubStr} | Fuzzy]
|
||||
[{user_id, like, UsernameSubStr} | Fuzzy]
|
||||
) ->
|
||||
binary:match(UserID, UsernameSubStr) /= nomatch andalso run_fuzzy_filter(E, Fuzzy);
|
||||
run_fuzzy_filter(
|
||||
E = #user_info{user_id = {_, UserID}},
|
||||
[{clientid, like, ClientIDSubStr} | Fuzzy]
|
||||
) ->
|
||||
binary:match(UserID, ClientIDSubStr) /= nomatch andalso run_fuzzy_filter(E, Fuzzy).
|
||||
binary:match(UserID, UsernameSubStr) /= nomatch andalso run_fuzzy_filter(E, Fuzzy).
|
||||
|
||||
%%------------------------------------------------------------------------------
|
||||
%% Internal functions
|
||||
|
|
|
@ -218,7 +218,7 @@ t_list_users(_) ->
|
|||
#{
|
||||
<<"page">> => 1,
|
||||
<<"limit">> => 20,
|
||||
<<"like_username">> => <<"3">>
|
||||
<<"like_user_id">> => <<"3">>
|
||||
},
|
||||
State
|
||||
).
|
||||
|
|
|
@ -77,17 +77,10 @@ emqx_gateway_api_authn {
|
|||
}
|
||||
}
|
||||
|
||||
like_username {
|
||||
like_user_id {
|
||||
desc {
|
||||
en: """Fuzzy search by username"""
|
||||
zh: """Username 模糊搜索"""
|
||||
}
|
||||
}
|
||||
|
||||
like_clientid{
|
||||
desc {
|
||||
en: """Fuzzy search by clientid"""
|
||||
zh: """Client ID 模糊搜索"""
|
||||
en: """Fuzzy search by user_id (username or clientid)"""
|
||||
zh: """用户 ID (username 或 clientid)模糊搜索"""
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -194,8 +194,7 @@ parse_qstring(Qs) ->
|
|||
[
|
||||
<<"page">>,
|
||||
<<"limit">>,
|
||||
<<"like_username">>,
|
||||
<<"like_clientid">>,
|
||||
<<"like_user_id">>,
|
||||
<<"is_superuser">>
|
||||
],
|
||||
Qs
|
||||
|
@ -379,26 +378,16 @@ params_paging_in_qs() ->
|
|||
|
||||
params_fuzzy_in_qs() ->
|
||||
[
|
||||
{like_username,
|
||||
{like_user_id,
|
||||
mk(
|
||||
binary(),
|
||||
#{
|
||||
in => query,
|
||||
required => false,
|
||||
desc => ?DESC(like_username),
|
||||
desc => ?DESC(like_user_id),
|
||||
example => <<"username">>
|
||||
}
|
||||
)},
|
||||
{like_clientid,
|
||||
mk(
|
||||
binary(),
|
||||
#{
|
||||
in => query,
|
||||
required => false,
|
||||
desc => ?DESC(like_clientid),
|
||||
example => <<"clientid">>
|
||||
}
|
||||
)},
|
||||
{is_superuser,
|
||||
mk(
|
||||
boolean(),
|
||||
|
|
|
@ -491,7 +491,7 @@ t_authn_fuzzy_search(_) ->
|
|||
}
|
||||
],
|
||||
|
||||
FuzzyDatas = [[{<<"like_username">>, <<"test">>}], [{<<"is_superuser">>, <<"true">>}]],
|
||||
FuzzyDatas = [[{<<"like_user_id">>, <<"test">>}], [{<<"is_superuser">>, <<"true">>}]],
|
||||
|
||||
lists:foreach(Create, UserDatas),
|
||||
lists:foreach(Checker, lists:zip(UserDatas, FuzzyDatas)),
|
||||
|
|
Loading…
Reference in New Issue