aboutsummaryrefslogtreecommitdiff
path: root/src/mod_register.erl
diff options
context:
space:
mode:
authorBadlop <badlop@process-one.net>2008-08-18 18:21:10 +0000
committerBadlop <badlop@process-one.net>2008-08-18 18:21:10 +0000
commit4ae1bda33f40384eba921af08c67c440145ed2cd (patch)
tree8fa3ea78388efd118465b271af98dc041c06498d /src/mod_register.erl
parentFix call to unexported function nodetree_default:get_subnodes/2 (diff)
* src/mod_register.erl: Change password using mod_register always
returns success regardless of real result (EJAB-723) * src/ejabberd_auth.erl: Likewise * src/ejabberd_auth_external.erl: Likewise * src/ejabberd_auth_internal.erl: Likewise * src/ejabberd_auth_odbc.erl: Likewise SVN Revision: 1530
Diffstat (limited to 'src/mod_register.erl')
-rw-r--r--src/mod_register.erl17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/mod_register.erl b/src/mod_register.erl
index f591daef5..7a4eca79f 100644
--- a/src/mod_register.erl
+++ b/src/mod_register.erl
@@ -163,8 +163,7 @@ process_iq(From, To,
Password = xml:get_tag_cdata(PTag),
case From of
#jid{user = User, lserver = Server} ->
- ejabberd_auth:set_password(User, Server, Password),
- IQ#iq{type = result, sub_el = [SubEl]};
+ try_set_password(User, Server, Password, IQ, SubEl);
_ ->
case try_register(User, Server, Password,
Source, Lang) of
@@ -194,6 +193,20 @@ process_iq(From, To,
{xmlelement, "password", [], []}]}]}
end.
+%% @doc Try to change password and return IQ response
+try_set_password(User, Server, Password, IQ, SubEl) ->
+ case ejabberd_auth:set_password(User, Server, Password) of
+ ok ->
+ IQ#iq{type = result, sub_el = [SubEl]};
+ {error, empty_password} ->
+ IQ#iq{type = error, sub_el = [SubEl, ?ERR_BAD_REQUEST]};
+ {error, not_allowed} ->
+ IQ#iq{type = error, sub_el = [SubEl, ?ERR_NOT_ALLOWED]};
+ {error, invalid_jid} ->
+ IQ#iq{type = error, sub_el = [SubEl, ?ERR_ITEM_NOT_FOUND]};
+ _ ->
+ IQ#iq{type = error, sub_el = [SubEl, ?ERR_INTERNAL_SERVER_ERROR]}
+ end.
try_register(User, Server, Password, Source, Lang) ->
case jlib:is_nodename(User) of