fix(sso): Improved SSO user deletion command
This commit is contained in:
parent
d1af81c86e
commit
56917fee5f
|
@ -24,6 +24,7 @@
|
||||||
-define(ROLE_SUPERUSER, <<"administrator">>).
|
-define(ROLE_SUPERUSER, <<"administrator">>).
|
||||||
-define(ROLE_DEFAULT, ?ROLE_SUPERUSER).
|
-define(ROLE_DEFAULT, ?ROLE_SUPERUSER).
|
||||||
|
|
||||||
|
-define(BACKEND_LOCAL, local).
|
||||||
-define(SSO_USERNAME(Backend, Name), {Backend, Name}).
|
-define(SSO_USERNAME(Backend, Name), {Backend, Name}).
|
||||||
|
|
||||||
-type dashboard_sso_backend() :: atom().
|
-type dashboard_sso_backend() :: atom().
|
||||||
|
|
|
@ -427,7 +427,7 @@ flatten_username(#{username := ?SSO_USERNAME(Backend, Name)} = Data) ->
|
||||||
backend => Backend
|
backend => Backend
|
||||||
};
|
};
|
||||||
flatten_username(#{username := Username} = Data) when is_binary(Username) ->
|
flatten_username(#{username := Username} = Data) when is_binary(Username) ->
|
||||||
Data#{backend => local}.
|
Data#{backend => ?BACKEND_LOCAL}.
|
||||||
|
|
||||||
-spec add_sso_user(dashboard_sso_backend(), binary(), dashboard_user_role(), binary()) ->
|
-spec add_sso_user(dashboard_sso_backend(), binary(), dashboard_user_role(), binary()) ->
|
||||||
{ok, map()} | {error, any()}.
|
{ok, map()} | {error, any()}.
|
||||||
|
|
|
@ -379,7 +379,7 @@ sso_parameters() ->
|
||||||
sso_parameters(Params) ->
|
sso_parameters(Params) ->
|
||||||
emqx_dashboard_sso_api:sso_parameters(Params).
|
emqx_dashboard_sso_api:sso_parameters(Params).
|
||||||
|
|
||||||
username(#{query_string := #{<<"backend">> := local}}, Username) ->
|
username(#{query_string := #{<<"backend">> := ?BACKEND_LOCAL}}, Username) ->
|
||||||
Username;
|
Username;
|
||||||
username(#{query_string := #{<<"backend">> := Backend}}, Username) ->
|
username(#{query_string := #{<<"backend">> := Backend}}, Username) ->
|
||||||
?SSO_USERNAME(Backend, Username);
|
?SSO_USERNAME(Backend, Username);
|
||||||
|
|
|
@ -191,7 +191,7 @@ token_ttl() ->
|
||||||
format(Token, ?SSO_USERNAME(Backend, Name), Role, ExpTime) ->
|
format(Token, ?SSO_USERNAME(Backend, Name), Role, ExpTime) ->
|
||||||
format(Token, Backend, Name, Role, ExpTime);
|
format(Token, Backend, Name, Role, ExpTime);
|
||||||
format(Token, Username, Role, ExpTime) ->
|
format(Token, Username, Role, ExpTime) ->
|
||||||
format(Token, local, Username, Role, ExpTime).
|
format(Token, ?BACKEND_LOCAL, Username, Role, ExpTime).
|
||||||
|
|
||||||
format(Token, Backend, Username, Role, ExpTime) ->
|
format(Token, Backend, Username, Role, ExpTime) ->
|
||||||
#?ADMIN_JWT{
|
#?ADMIN_JWT{
|
||||||
|
|
|
@ -34,16 +34,13 @@ admins(["passwd", Username, Password]) ->
|
||||||
print_error(Reason)
|
print_error(Reason)
|
||||||
end;
|
end;
|
||||||
admins(["del", Username]) ->
|
admins(["del", Username]) ->
|
||||||
case emqx_dashboard_admin:remove_user(bin(Username)) of
|
delete_user(bin(Username));
|
||||||
{ok, _} ->
|
admins(["del", Username, BackendName]) ->
|
||||||
emqx_ctl:print("ok~n");
|
case atom(BackendName) of
|
||||||
{error, Reason} ->
|
{ok, ?BACKEND_LOCAL} ->
|
||||||
print_error(Reason)
|
delete_user(bin(Username));
|
||||||
end;
|
{ok, Backend} ->
|
||||||
admins(["del", Username, Backend]) ->
|
delete_user(?SSO_USERNAME(Backend, bin(Username)));
|
||||||
case emqx_dashboard_admin:remove_user(?SSO_USERNAME(atom(Backend), bin(Username))) of
|
|
||||||
{ok, _} ->
|
|
||||||
emqx_ctl:print("ok~n");
|
|
||||||
{error, Reason} ->
|
{error, Reason} ->
|
||||||
print_error(Reason)
|
print_error(Reason)
|
||||||
end;
|
end;
|
||||||
|
@ -52,9 +49,18 @@ admins(_) ->
|
||||||
[
|
[
|
||||||
{"admins add <Username> <Password> <Description> <Role>", "Add dashboard user"},
|
{"admins add <Username> <Password> <Description> <Role>", "Add dashboard user"},
|
||||||
{"admins passwd <Username> <Password>", "Reset dashboard user password"},
|
{"admins passwd <Username> <Password>", "Reset dashboard user password"},
|
||||||
{"admins del <Username> <Backend>", "Delete dashboard user"}
|
{"admins del <Username> <Backend>",
|
||||||
|
"Delete dashboard user, <Backend> can be omitted, the default value is 'local'"}
|
||||||
]
|
]
|
||||||
).
|
).
|
||||||
|
|
||||||
atom(S) ->
|
atom(S) ->
|
||||||
erlang:list_to_atom(S).
|
emqx_utils:safe_to_existing_atom(S).
|
||||||
|
|
||||||
|
delete_user(Username) ->
|
||||||
|
case emqx_dashboard_admin:remove_user(Username) of
|
||||||
|
{ok, _} ->
|
||||||
|
emqx_ctl:print("ok~n");
|
||||||
|
{error, Reason} ->
|
||||||
|
print_error(Reason)
|
||||||
|
end.
|
||||||
|
|
Loading…
Reference in New Issue