Merge pull request #5461 from DDDHuang/fix_users_api

Fix users api
This commit is contained in:
DDDHuang 2021-08-12 10:46:00 +08:00 committed by GitHub
commit cb83c309ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 35 deletions

View File

@ -97,6 +97,14 @@ users_api() ->
responses => #{
<<"200">> => response_array_schema(<<"">>, show_user)
}
},
post => #{
description => <<"Create dashboard users">>,
'requestBody' => request_body_schema(create_user),
responses => #{
<<"200">> => response_schema(<<"Create Users successfully">>),
<<"400">> => bad_request()
}
}
},
{"/users", Metadata, users}.
@ -117,7 +125,7 @@ user_api() ->
'requestBody' => request_body_schema(#{
type => object,
properties => #{
tags => #{
tag => #{
type => string
}
}
@ -126,15 +134,6 @@ user_api() ->
<<"200">> => response_schema(<<"Update Users successfully">>),
<<"400">> => bad_request()
}
},
post => #{
description => <<"Create dashboard users">>,
parameters => [path_param_username()],
'requestBody' => request_body_schema(create_user),
responses => #{
<<"200">> => response_schema(<<"Create Users successfully">>),
<<"400">> => bad_request()
}
}
},
{"/users/:username", Metadata, user}.
@ -161,7 +160,7 @@ change_pwd_api() ->
}
}
},
{"/change_pwd/:username", Metadata, change_pwd}.
{"/users/:username/change_pwd", Metadata, change_pwd}.
path_param_username() ->
#{
@ -187,14 +186,32 @@ auth(post, Request) ->
end.
users(get, _Request) ->
{200, [row(User) || User <- emqx_dashboard_admin:all_users()]}.
{200, [row(User) || User <- emqx_dashboard_admin:all_users()]};
users(post, Request) ->
{ok, Body, _} = cowboy_req:read_body(Request),
Params = emqx_json:decode(Body, [return_maps]),
Tag = maps:get(<<"tag">>, Params),
Username = maps:get(<<"username">>, Params),
Password = maps:get(<<"password">>, Params),
case ?EMPTY(Username) orelse ?EMPTY(Password) of
true ->
{400, #{code => <<"CREATE_USER_FAIL">>,
message => <<"Username or password undefined">>}};
false ->
case emqx_dashboard_admin:add_user(Username, Password, Tag) of
ok -> {200};
{error, Reason} ->
{400, #{code => <<"CREATE_USER_FAIL">>, message => Reason}}
end
end.
user(put, Request) ->
Username = cowboy_req:binding(username, Request),
{ok, Body, _} = cowboy_req:read_body(Request),
Params = emqx_json:decode(Body, [return_maps]),
Tags = maps:get(<<"tags">>, Params),
case emqx_dashboard_admin:update_user(Username, Tags) of
Tag = maps:get(<<"tag">>, Params),
case emqx_dashboard_admin:update_user(Username, Tag) of
ok -> {200};
{error, Reason} ->
{400, #{code => <<"UPDATE_FAIL">>, message => Reason}}
@ -208,24 +225,6 @@ user(delete, Request) ->
false ->
_ = emqx_dashboard_admin:remove_user(Username),
{200}
end;
user(post, Request) ->
{ok, Body, _} = cowboy_req:read_body(Request),
Params = emqx_json:decode(Body, [return_maps]),
Tags = maps:get(<<"tags">>, Params),
Username = maps:get(<<"username">>, Params),
Password = maps:get(<<"password">>, Params),
case ?EMPTY(Username) orelse ?EMPTY(Password) of
true ->
{400, #{code => <<"CREATE_USER_FAIL">>,
message => <<"Username or password undefined">>}};
false ->
case emqx_dashboard_admin:add_user(Username, Password, Tags) of
ok -> {200};
{error, Reason} ->
{400, #{code => <<"CREATE_USER_FAIL">>, message => Reason}}
end
end.
change_pwd(put, Request) ->
@ -240,8 +239,8 @@ change_pwd(put, Request) ->
{400, #{code => <<"CHANGE_PWD_FAIL">>, message => Reason}}
end.
row(#mqtt_admin{username = Username, tags = Tags}) ->
#{username => Username, tags => Tags}.
row(#mqtt_admin{username = Username, tags = Tag}) ->
#{username => Username, tag => Tag}.
bad_request() ->
response_schema(<<"Bad Request">>,

View File

@ -96,7 +96,7 @@ t_rest_api(_Config) ->
, http_post("users", #{<<"username">> => <<"usera">>, <<"password">> => <<"passwd">>})
, http_post("auth", #{<<"username">> => <<"usera">>, <<"password">> => <<"passwd">>})
, http_delete("users/usera")
, http_put("change_pwd/admin", #{<<"old_pwd">> => <<"public">>, <<"new_pwd">> => <<"newpwd">>})
, http_put("users/admin/change_pwd", #{<<"old_pwd">> => <<"public">>, <<"new_pwd">> => <<"newpwd">>})
, http_post("auth", #{<<"username">> => <<"admin">>, <<"password">> => <<"newpwd">>})
]],
ok.