fix issue#428 - Username/Password Authentication: support to configure default users

This commit is contained in:
Feng 2016-01-17 20:01:36 +08:00
parent 1cbdc5e9e4
commit a983361121
1 changed files with 12 additions and 2 deletions

View File

@ -71,6 +71,9 @@ add_user(Username, Password) ->
User = #?AUTH_USERNAME_TAB{username = Username, password = hash(Password)}, User = #?AUTH_USERNAME_TAB{username = Username, password = hash(Password)},
mnesia:transaction(fun mnesia:write/1, [User]). mnesia:transaction(fun mnesia:write/1, [User]).
add_default_user(Username, Password) ->
add_user(bin(Username), bin(Password)).
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
%% @doc Lookup user by username %% @doc Lookup user by username
%% @end %% @end
@ -98,13 +101,16 @@ all_users() ->
%%%============================================================================= %%%=============================================================================
%%% emqttd_auth callbacks %%% emqttd_auth callbacks
%%%============================================================================= %%%=============================================================================
init(Opts) -> init(DefautUsers) ->
mnesia:create_table(?AUTH_USERNAME_TAB, [ mnesia:create_table(?AUTH_USERNAME_TAB, [
{disc_copies, [node()]}, {disc_copies, [node()]},
{attributes, record_info(fields, ?AUTH_USERNAME_TAB)}]), {attributes, record_info(fields, ?AUTH_USERNAME_TAB)}]),
mnesia:add_table_copy(?AUTH_USERNAME_TAB, node(), disc_copies), mnesia:add_table_copy(?AUTH_USERNAME_TAB, node(), disc_copies),
lists:foreach(fun({Username, Password}) ->
add_default_user(Username, Password)
end, DefautUsers),
emqttd_ctl:register_cmd(users, {?MODULE, cli}, []), emqttd_ctl:register_cmd(users, {?MODULE, cli}, []),
{ok, Opts}. {ok, []}.
check(#mqtt_client{username = undefined}, _Password, _Opts) -> check(#mqtt_client{username = undefined}, _Password, _Opts) ->
{error, "Username undefined"}; {error, "Username undefined"};
@ -141,3 +147,7 @@ salt() ->
Salt = random:uniform(16#ffffffff), Salt = random:uniform(16#ffffffff),
<<Salt:32>>. <<Salt:32>>.
bin(A) when is_atom(A) -> bin(atom_to_list(A));
bin(L) when is_list(L) -> list_to_binary(L);
bin(B) when is_binary(B) -> B.