aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mod_register.erl18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/mod_register.erl b/src/mod_register.erl
index 9304f8b44..31bb52c9d 100644
--- a/src/mod_register.erl
+++ b/src/mod_register.erl
@@ -131,12 +131,24 @@ process_iq(#iq{type = set, lang = Lang, to = To, from = From,
if is_binary(User) ->
case From of
#jid{user = User, lserver = Server} ->
+ ResIQ = xmpp:make_iq_result(IQ),
+ ejabberd_router:route(ResIQ),
ejabberd_auth:remove_user(User, Server),
- xmpp:make_iq_result(IQ);
+ ignore;
_ ->
if is_binary(Password) ->
- ejabberd_auth:remove_user(User, Server, Password),
- xmpp:make_iq_result(IQ);
+ case ejabberd_auth:check_password(
+ User, <<"">>, Server, Password) of
+ true ->
+ ResIQ = xmpp:make_iq_result(IQ),
+ ejabberd_router:route(ResIQ),
+ ejabberd_auth:remove_user(User, Server),
+ ignore;
+ false ->
+ Txt = ?T("Incorrect password"),
+ xmpp:make_error(
+ IQ, xmpp:err_forbidden(Txt, Lang))
+ end;
true ->
Txt = ?T("No 'password' found in this query"),
xmpp:make_error(IQ, xmpp:err_bad_request(Txt, Lang))