fix(sso): refactor the `admins` CLI
1. revert the opensource version 2. allow delete the SSO user via CLI
This commit is contained in:
parent
7105f68d2d
commit
e94192d1fa
|
@ -212,8 +212,8 @@ add_user_(Username, Password, Role, Desc) ->
|
||||||
mnesia:abort(<<"username_already_exist">>)
|
mnesia:abort(<<"username_already_exist">>)
|
||||||
end.
|
end.
|
||||||
|
|
||||||
-spec remove_user(binary()) -> {ok, any()} | {error, any()}.
|
-spec remove_user(dashboard_username()) -> {ok, any()} | {error, any()}.
|
||||||
remove_user(Username) when is_binary(Username) ->
|
remove_user(Username) ->
|
||||||
Trans = fun() ->
|
Trans = fun() ->
|
||||||
case lookup_user(Username) of
|
case lookup_user(Username) of
|
||||||
[] -> mnesia:abort(<<"username_not_found">>);
|
[] -> mnesia:abort(<<"username_not_found">>);
|
||||||
|
|
|
@ -24,9 +24,26 @@
|
||||||
unload/0
|
unload/0
|
||||||
]).
|
]).
|
||||||
|
|
||||||
load() ->
|
-export([bin/1, print_error/1]).
|
||||||
emqx_ctl:register_command(admins, {?MODULE, admins}, []).
|
|
||||||
|
|
||||||
|
-if(?EMQX_RELEASE_EDITION == ee).
|
||||||
|
-define(CLI_MOD, emqx_dashboard_sso_cli).
|
||||||
|
-else.
|
||||||
|
-define(CLI_MOD, ?MODULE).
|
||||||
|
-endif.
|
||||||
|
|
||||||
|
load() ->
|
||||||
|
emqx_ctl:register_command(admins, {?CLI_MOD, admins}, []).
|
||||||
|
|
||||||
|
admins(["add", Username, Password]) ->
|
||||||
|
admins(["add", Username, Password, ""]);
|
||||||
|
admins(["add", Username, Password, Desc]) ->
|
||||||
|
case emqx_dashboard_admin:add_user(bin(Username), bin(Password), ?ROLE_DEFAULT, bin(Desc)) of
|
||||||
|
{ok, _} ->
|
||||||
|
emqx_ctl:print("ok~n");
|
||||||
|
{error, Reason} ->
|
||||||
|
print_error(Reason)
|
||||||
|
end;
|
||||||
admins(["passwd", Username, Password]) ->
|
admins(["passwd", Username, Password]) ->
|
||||||
case emqx_dashboard_admin:change_password(bin(Username), bin(Password)) of
|
case emqx_dashboard_admin:change_password(bin(Username), bin(Password)) of
|
||||||
{ok, _} ->
|
{ok, _} ->
|
||||||
|
@ -41,8 +58,14 @@ admins(["del", Username]) ->
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
print_error(Reason)
|
print_error(Reason)
|
||||||
end;
|
end;
|
||||||
admins(Args) ->
|
admins(_) ->
|
||||||
inner_admins(Args).
|
emqx_ctl:usage(
|
||||||
|
[
|
||||||
|
{"admins add <Username> <Password> <Description>", "Add dashboard user"},
|
||||||
|
{"admins passwd <Username> <Password>", "Reset dashboard user password"},
|
||||||
|
{"admins del <Username>", "Delete dashboard user"}
|
||||||
|
]
|
||||||
|
).
|
||||||
|
|
||||||
unload() ->
|
unload() ->
|
||||||
emqx_ctl:unregister_command(admins).
|
emqx_ctl:unregister_command(admins).
|
||||||
|
@ -54,47 +77,3 @@ print_error(Reason) when is_binary(Reason) ->
|
||||||
%% Maybe has more types of error, but there is only binary now. So close it for dialyzer.
|
%% Maybe has more types of error, but there is only binary now. So close it for dialyzer.
|
||||||
% print_error(Reason) ->
|
% print_error(Reason) ->
|
||||||
% emqx_ctl:print("Error: ~p~n", [Reason]).
|
% emqx_ctl:print("Error: ~p~n", [Reason]).
|
||||||
|
|
||||||
-if(?EMQX_RELEASE_EDITION == ee).
|
|
||||||
usage() ->
|
|
||||||
[
|
|
||||||
{"admins add <Username> <Password> <Role> <Description>", "Add dashboard user"},
|
|
||||||
{"admins passwd <Username> <Password>", "Reset dashboard user password"},
|
|
||||||
{"admins del <Username>", "Delete dashboard user"}
|
|
||||||
].
|
|
||||||
|
|
||||||
inner_admins(["add", Username, Password]) ->
|
|
||||||
inner_admins(["add", Username, Password, ?ROLE_SUPERUSER]);
|
|
||||||
inner_admins(["add", Username, Password, Role]) ->
|
|
||||||
inner_admins(["add", Username, Password, Role, ""]);
|
|
||||||
inner_admins(["add", Username, Password, Role, Desc]) ->
|
|
||||||
case emqx_dashboard_admin:add_user(bin(Username), bin(Password), bin(Role), bin(Desc)) of
|
|
||||||
{ok, _} ->
|
|
||||||
emqx_ctl:print("ok~n");
|
|
||||||
{error, Reason} ->
|
|
||||||
print_error(Reason)
|
|
||||||
end;
|
|
||||||
inner_admins(_) ->
|
|
||||||
emqx_ctl:usage(usage()).
|
|
||||||
-else.
|
|
||||||
|
|
||||||
usage() ->
|
|
||||||
[
|
|
||||||
{"admins add <Username> <Password> <Description>", "Add dashboard user"},
|
|
||||||
{"admins passwd <Username> <Password>", "Reset dashboard user password"},
|
|
||||||
{"admins del <Username>", "Delete dashboard user"}
|
|
||||||
].
|
|
||||||
|
|
||||||
inner_admins(["add", Username, Password]) ->
|
|
||||||
inner_admins(["add", Username, Password, ""]);
|
|
||||||
inner_admins(["add", Username, Password, Desc]) ->
|
|
||||||
case emqx_dashboard_admin:add_user(bin(Username), bin(Password), ?ROLE_SUPERUSER, bin(Desc)) of
|
|
||||||
{ok, _} ->
|
|
||||||
emqx_ctl:print("ok~n");
|
|
||||||
{error, Reason} ->
|
|
||||||
print_error(Reason)
|
|
||||||
end;
|
|
||||||
inner_admins(_) ->
|
|
||||||
emqx_ctl:usage(usage()).
|
|
||||||
|
|
||||||
-endif.
|
|
||||||
|
|
|
@ -0,0 +1,60 @@
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
%% Copyright (c) 2023 EMQ Technologies Co., Ltd. All Rights Reserved.
|
||||||
|
%%--------------------------------------------------------------------
|
||||||
|
|
||||||
|
-module(emqx_dashboard_sso_cli).
|
||||||
|
|
||||||
|
-include_lib("emqx_dashboard/include/emqx_dashboard.hrl").
|
||||||
|
|
||||||
|
-export([admins/1]).
|
||||||
|
|
||||||
|
-import(emqx_dashboard_cli, [bin/1, print_error/1]).
|
||||||
|
|
||||||
|
admins(["add", Username, Password]) ->
|
||||||
|
admins(["add", Username, Password, ""]);
|
||||||
|
admins(["add", Username, Password, Desc]) ->
|
||||||
|
case emqx_dashboard_admin:add_user(bin(Username), bin(Password), ?ROLE_DEFAULT, bin(Desc)) of
|
||||||
|
{ok, _} ->
|
||||||
|
emqx_ctl:print("ok~n");
|
||||||
|
{error, Reason} ->
|
||||||
|
print_error(Reason)
|
||||||
|
end;
|
||||||
|
admins(["add", Username, Password, Desc, Role]) ->
|
||||||
|
case emqx_dashboard_admin:add_user(bin(Username), bin(Password), bin(Role), bin(Desc)) of
|
||||||
|
{ok, _} ->
|
||||||
|
emqx_ctl:print("ok~n");
|
||||||
|
{error, Reason} ->
|
||||||
|
print_error(Reason)
|
||||||
|
end;
|
||||||
|
admins(["passwd", Username, Password]) ->
|
||||||
|
case emqx_dashboard_admin:change_password(bin(Username), bin(Password)) of
|
||||||
|
{ok, _} ->
|
||||||
|
emqx_ctl:print("ok~n");
|
||||||
|
{error, Reason} ->
|
||||||
|
print_error(Reason)
|
||||||
|
end;
|
||||||
|
admins(["del", Username]) ->
|
||||||
|
case emqx_dashboard_admin:remove_user(bin(Username)) of
|
||||||
|
{ok, _} ->
|
||||||
|
emqx_ctl:print("ok~n");
|
||||||
|
{error, Reason} ->
|
||||||
|
print_error(Reason)
|
||||||
|
end;
|
||||||
|
admins(["del", Username, Backend]) ->
|
||||||
|
case emqx_dashboard_admin:remove_user(?SSO_USERNAME(atom(Backend), bin(Username))) of
|
||||||
|
{ok, _} ->
|
||||||
|
emqx_ctl:print("ok~n");
|
||||||
|
{error, Reason} ->
|
||||||
|
print_error(Reason)
|
||||||
|
end;
|
||||||
|
admins(_) ->
|
||||||
|
emqx_ctl:usage(
|
||||||
|
[
|
||||||
|
{"admins add <Username> <Password> <Description> <Role>", "Add dashboard user"},
|
||||||
|
{"admins passwd <Username> <Password>", "Reset dashboard user password"},
|
||||||
|
{"admins del <Username> <Backend>", "Delete dashboard user"}
|
||||||
|
]
|
||||||
|
).
|
||||||
|
|
||||||
|
atom(S) ->
|
||||||
|
erlang:list_to_atom(S).
|
Loading…
Reference in New Issue