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))