diff options
Diffstat (limited to 'src/ejabberd_auth.erl')
-rw-r--r-- | src/ejabberd_auth.erl | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl index 3a579a41b..6d150eae8 100644 --- a/src/ejabberd_auth.erl +++ b/src/ejabberd_auth.erl @@ -16,14 +16,17 @@ -behaviour(gen_server). %% External exports --export([start/0, start_link/0, set_password/2, check_password/2]). +-export([start/0, start_link/0, + set_password/2, + check_password/2, + try_register/2]). %% gen_server callbacks -export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2]). -record(state, {}). --record(passwd, {jid, password}). +-record(passwd, {user, password}). %%%---------------------------------------------------------------------- %%% API @@ -92,9 +95,11 @@ terminate(Reason, State) -> %%% Internal functions %%%---------------------------------------------------------------------- -check_password(Jid, Password) -> +% TODO: lowercase user name + +check_password(User, Password) -> F = fun() -> - case mnesia:read({passwd, Jid}) of + case mnesia:read({passwd, User}) of [E] -> E#passwd.password end @@ -107,16 +112,21 @@ check_password(Jid, Password) -> end. -set_password(Jid, Password) -> +set_password(User, Password) -> + F = fun() -> + mnesia:write(#passwd{user = User, password = Password}) + end, + mnesia:transaction(F). + +try_register(User, Password) -> F = fun() -> - case mnesia:read({passwd, Jid}) of + case mnesia:read({passwd, User}) of [] -> - New = #passwd{jid = Jid, password = Password}, - mnesia:write(New); + mnesia:write(#passwd{user = User, password = Password}), + ok; [E] -> - New = E#passwd{password = Password}, - mnesia:write(New) + exists end end, mnesia:transaction(F). - + |