diff options
Diffstat (limited to 'src/ejabberd_auth.erl')
-rw-r--r-- | src/ejabberd_auth.erl | 41 |
1 files changed, 24 insertions, 17 deletions
diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl index 54b62c00..fdd04838 100644 --- a/src/ejabberd_auth.erl +++ b/src/ejabberd_auth.erl @@ -144,25 +144,32 @@ check_password(User, Password, StreamID, Digest) -> set_password(User, Password) -> - LUser = jlib:nodeprep(User), - F = fun() -> - mnesia:write(#passwd{user = LUser, password = Password}) - end, - mnesia:transaction(F). + case jlib:nodeprep(User) of + error -> {error, invalid_jid}; + LUser -> + F = fun() -> + mnesia:write(#passwd{user = LUser, + password = Password}) + end, + mnesia:transaction(F) + end. try_register(User, Password) -> - LUser = jlib:nodeprep(User), - F = fun() -> - case mnesia:read({passwd, LUser}) of - [] -> - mnesia:write(#passwd{user = LUser, - password = Password}), - ok; - [E] -> - exists - end - end, - mnesia:transaction(F). + case jlib:nodeprep(User) of + error -> {error, invalid_jid}; + LUser -> + F = fun() -> + case mnesia:read({passwd, LUser}) of + [] -> + mnesia:write(#passwd{user = LUser, + password = Password}), + ok; + [E] -> + exists + end + end, + mnesia:transaction(F) + end. dirty_get_registered_users() -> mnesia:dirty_all_keys(passwd). |