From 3b13f1dfcc8b794c1b7e88882fc3cbdefdf17159 Mon Sep 17 00:00:00 2001 From: DDDHuang <44492639+DDDHuang@users.noreply.github.com> Date: Mon, 25 Apr 2022 11:10:47 +0800 Subject: [PATCH] fix: dashboard change pwd & delete user with destory token --- .../src/emqx_dashboard_admin.erl | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/apps/emqx_dashboard/src/emqx_dashboard_admin.erl b/apps/emqx_dashboard/src/emqx_dashboard_admin.erl index d98d7bc7e..188b5411d 100644 --- a/apps/emqx_dashboard/src/emqx_dashboard_admin.erl +++ b/apps/emqx_dashboard/src/emqx_dashboard_admin.erl @@ -117,7 +117,13 @@ remove_user(Username) when is_binary(Username) -> _ -> mnesia:delete({?ADMIN, Username}) end end, - return(mria:transaction(?DASHBOARD_SHARD, Trans)). + case return(mria:transaction(?DASHBOARD_SHARD, Trans)) of + {ok, Result} -> + _ = emqx_dashboard_token:destroy_by_username(Username), + {ok, Result}; + {error, Reason} -> + {error, Reason} + end. -spec(update_user(binary(), binary()) -> {ok, map()} | {error, term()}). update_user(Username, Desc) when is_binary(Username) -> @@ -160,20 +166,28 @@ change_password(Username, Password) when is_binary(Username), is_binary(Password change_password_hash(Username, hash(Password)). change_password_hash(Username, PasswordHash) -> - update_pwd(Username, fun(User) -> - User#?ADMIN{pwdhash = PasswordHash} - end). + ChangePWD = + fun(User) -> + User#?ADMIN{pwdhash = PasswordHash} + end, + case update_pwd(Username, ChangePWD) of + {ok, Result} -> + _ = emqx_dashboard_token:destroy_by_username(Username), + {ok, Result}; + {error, Reason} -> {error, Reason} + end. update_pwd(Username, Fun) -> - Trans = fun() -> - User = - case lookup_user(Username) of + Trans = + fun() -> + User = + case lookup_user(Username) of [Admin] -> Admin; [] -> - mnesia:abort(<<"Username Not Found">>) - end, - mnesia:write(Fun(User)) - end, + mnesia:abort(<<"Username Not Found">>) + end, + mnesia:write(Fun(User)) + end, return(mria:transaction(?DASHBOARD_SHARD, Trans)).