From 295b1312be11b041b41b533664f3982160cb0aa4 Mon Sep 17 00:00:00 2001 From: JimMoen Date: Thu, 21 Oct 2021 10:09:54 +0800 Subject: [PATCH] feat(authn_scram): authn_scram users page query --- .../emqx_enhanced_authn_scram_mnesia.erl | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/apps/emqx_authn/src/enhanced_authn/emqx_enhanced_authn_scram_mnesia.erl b/apps/emqx_authn/src/enhanced_authn/emqx_enhanced_authn_scram_mnesia.erl index 92bdf0619..d5043917e 100644 --- a/apps/emqx_authn/src/enhanced_authn/emqx_enhanced_authn_scram_mnesia.erl +++ b/apps/emqx_authn/src/enhanced_authn/emqx_enhanced_authn_scram_mnesia.erl @@ -38,7 +38,7 @@ , delete_user/2 , update_user/3 , lookup_user/2 - , list_users/1 + , list_users/2 ]). -define(TAB, ?MODULE). @@ -181,23 +181,21 @@ update_user(UserID, User, salt = Salt} end, mnesia:write(?TAB, UserInfo2, write), - {ok, serialize_user_info(UserInfo2)} + {ok, format_user_info(UserInfo2)} end end). lookup_user(UserID, #{user_group := UserGroup}) -> case mnesia:dirty_read(?TAB, {UserGroup, UserID}) of [UserInfo] -> - {ok, serialize_user_info(UserInfo)}; + {ok, format_user_info(UserInfo)}; [] -> {error, not_found} end. -%% TODO: Support Pagination -list_users(#{user_group := UserGroup}) -> - Users = [serialize_user_info(UserInfo) || - #user_info{user_id = {UserGroup0, _}} = UserInfo <- ets:tab2list(?TAB), UserGroup0 =:= UserGroup], - {ok, Users}. +list_users(PageParams, #{user_group := UserGroup}) -> + MatchSpec = [{{user_info, {UserGroup, '_'}, '_', '_', '_', '_'}, [], ['$_']}], + {ok, emqx_mgmt_api:paginate(?TAB, MatchSpec, PageParams, fun format_user_info/1)}. %%------------------------------------------------------------------------------ %% Internal functions @@ -269,5 +267,5 @@ trans(Fun, Args) -> {aborted, Reason} -> {error, Reason} end. -serialize_user_info(#user_info{user_id = {_, UserID}, is_superuser = IsSuperuser}) -> +format_user_info(#user_info{user_id = {_, UserID}, is_superuser = IsSuperuser}) -> #{user_id => UserID, is_superuser => IsSuperuser}.