fix(rbac): change default role and update changes

This commit is contained in:
firest 2023-09-18 11:40:35 +08:00
parent 4b97d3f57d
commit ca6547c05b
5 changed files with 8 additions and 9 deletions

View File

@ -23,11 +23,7 @@
-define(ROLE_VIEWER, <<"viewer">>). -define(ROLE_VIEWER, <<"viewer">>).
-define(ROLE_SUPERUSER, <<"superuser">>). -define(ROLE_SUPERUSER, <<"superuser">>).
-if(?EMQX_RELEASE_EDITION == ee).
-define(ROLE_DEFAULT, ?ROLE_VIEWER).
-else.
-define(ROLE_DEFAULT, ?ROLE_SUPERUSER). -define(ROLE_DEFAULT, ?ROLE_SUPERUSER).
-endif.
-record(?ADMIN, { -record(?ADMIN, {
username :: binary(), username :: binary(),

View File

@ -405,7 +405,7 @@ ensure_role(Role) when is_binary(Role) ->
-if(?EMQX_RELEASE_EDITION == ee). -if(?EMQX_RELEASE_EDITION == ee).
legal_role(Role) -> legal_role(Role) ->
emqx_dashboard_rbac:legal_role(Role). emqx_dashboard_rbac:valid_role(Role).
role(Data) -> role(Data) ->
emqx_dashboard_rbac:role(Data). emqx_dashboard_rbac:role(Data).

View File

@ -242,7 +242,7 @@ logout(_, #{
end. end.
users(get, _Request) -> users(get, _Request) ->
{200, emqx_dashboard_admin:all_users()}; {200, filter_result(emqx_dashboard_admin:all_users())};
users(post, #{body := Params}) -> users(post, #{body := Params}) ->
Desc = maps:get(<<"description">>, Params, <<"">>), Desc = maps:get(<<"description">>, Params, <<"">>),
Role = maps:get(<<"role">>, Params, ?ROLE_DEFAULT), Role = maps:get(<<"role">>, Params, ?ROLE_DEFAULT),

View File

@ -6,7 +6,7 @@
-include_lib("emqx_dashboard/include/emqx_dashboard.hrl"). -include_lib("emqx_dashboard/include/emqx_dashboard.hrl").
-export([check_rbac/2, role/1, legal_role/1]). -export([check_rbac/2, role/1, valid_role/1]).
-dialyzer({nowarn_function, role/1}). -dialyzer({nowarn_function, role/1}).
%%===================================================================== %%=====================================================================
@ -27,7 +27,7 @@ role([]) ->
role(#{role := Role}) -> role(#{role := Role}) ->
Role. Role.
legal_role(Role) -> valid_role(Role) ->
case lists:member(Role, role_list()) of case lists:member(Role, role_list()) of
true -> true ->
ok; ok;

View File

@ -1,6 +1,9 @@
Implemented a preliminary Role-Based Access Control for the Dashboard. Implemented a preliminary Role-Based Access Control for the Dashboard.
In this version, there are two predefined roles: In this version, there are two predefined roles:
- superuser - superuser
This role could access all resources. This role could access all resources.
- viewer - viewer
This role only can access the `GET` resource.
This role can only view resources and data, corresponding to all GET requests in the REST API.