Merge pull request #8046 from savonarola/fix-authn-user-search-api

fix(authn): fix user search API
This commit is contained in:
Ilya Averyanov 2022-05-25 17:25:18 +03:00 committed by GitHub
commit 26c83f40df
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 18 additions and 59 deletions

View File

@ -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"""
}
}

View File

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

View File

@ -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

View File

@ -218,7 +218,7 @@ t_list_users(_) ->
#{
<<"page">> => 1,
<<"limit">> => 20,
<<"like_username">> => <<"3">>
<<"like_user_id">> => <<"3">>
},
State
).

View File

@ -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模糊搜索"""
}
}

View File

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

View File

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