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">>)
|
||||
end.
|
||||
|
||||
-spec remove_user(binary()) -> {ok, any()} | {error, any()}.
|
||||
remove_user(Username) when is_binary(Username) ->
|
||||
-spec remove_user(dashboard_username()) -> {ok, any()} | {error, any()}.
|
||||
remove_user(Username) ->
|
||||
Trans = fun() ->
|
||||
case lookup_user(Username) of
|
||||
[] -> mnesia:abort(<<"username_not_found">>);
|
||||
|
|
|
@ -24,9 +24,26 @@
|
|||
unload/0
|
||||
]).
|
||||
|
||||
load() ->
|
||||
emqx_ctl:register_command(admins, {?MODULE, admins}, []).
|
||||
-export([bin/1, print_error/1]).
|
||||
|
||||
-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]) ->
|
||||
case emqx_dashboard_admin:change_password(bin(Username), bin(Password)) of
|
||||
{ok, _} ->
|
||||
|
@ -41,8 +58,14 @@ admins(["del", Username]) ->
|
|||
{error, Reason} ->
|
||||
print_error(Reason)
|
||||
end;
|
||||
admins(Args) ->
|
||||
inner_admins(Args).
|
||||
admins(_) ->
|
||||
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() ->
|
||||
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.
|
||||
% print_error(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