aboutsummaryrefslogtreecommitdiff
path: root/src/ejabberd_auth.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/ejabberd_auth.erl')
-rw-r--r--src/ejabberd_auth.erl41
1 files changed, 24 insertions, 17 deletions
diff --git a/src/ejabberd_auth.erl b/src/ejabberd_auth.erl
index 54b62c006..fdd048386 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).