aboutsummaryrefslogtreecommitdiff
path: root/src/mod_configure.erl
diff options
context:
space:
mode:
authorAlexey Shchepin <alexey@process-one.net>2003-10-09 18:09:05 +0000
committerAlexey Shchepin <alexey@process-one.net>2003-10-09 18:09:05 +0000
commit7df146166a7229a66e5d7d4fe8476a5a4c646e0b (patch)
tree4160eed36b115426b948f3944476ce41a1cf9fa6 /src/mod_configure.erl
parent* src/ejabberd_c2s.erl: Added support for "jid-malformed" error (diff)
* src/ejabberd_c2s.erl: Added authentification logging
* src/ejabberd_listener.erl: Added logging of accepted connections * src/stringprep/stringprep_drv.c: Cleanup * src/jd2ejd.erl: Added support for iq:private importing * src/mod_configure.erl: Fixed user removal * src/mod_private.erl: Added remove_user/1 * doc/guide.tex: Updated * src/mod_disco.erl: Added "extra_domains" option SVN Revision: 146
Diffstat (limited to 'src/mod_configure.erl')
-rw-r--r--src/mod_configure.erl28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/mod_configure.erl b/src/mod_configure.erl
index 95bf4e417..18cdbdc90 100644
--- a/src/mod_configure.erl
+++ b/src/mod_configure.erl
@@ -665,13 +665,16 @@ set_form(["config", "remusers"], Lang, XData) ->
fun({Var, Vals}) ->
case Vals of
["1"] ->
- ejabberd_sm ! {route, {"", "", ""}, {Var, "", ""},
+ ejabberd_sm ! {route,
+ jlib:make_jid("", "", ""),
+ jlib:make_jid(Var, "", ""),
{xmlelement, "broadcast", [],
[{exit, "User removed"}]}},
catch ejabberd_auth:remove_user(Var),
catch mod_roster:remove_user(Var),
catch mod_offline:remove_user(Var),
- catch mod_vcard:remove_user(Var);
+ catch mod_vcard:remove_user(Var),
+ catch mod_private:remove_user(Var);
_ ->
ok
end
@@ -703,7 +706,7 @@ process_sm_iq(From, To, {iq, ID, Type, XMLNS, SubEl}) ->
deny ->
{iq, ID, error, XMLNS, [SubEl, ?ERR_NOT_ALLOWED]};
allow ->
- {User, _, _} = To,
+ #jid{user = User} = To,
Lang = xml:get_tag_attr_s("xml:lang", SubEl),
case Type of
set ->
@@ -790,5 +793,24 @@ get_sm_form(_, _, Lang) ->
{error, ?ERR_SERVICE_UNAVAILABLE}.
+set_sm_form(User, [], Lang, XData) ->
+ case lists:keysearch("action", 1, XData) of
+ {value, {_, ["edit"]}} ->
+ {error, ?ERR_FEATURE_NOT_IMPLEMENTED};
+ {value, {_, ["remove"]}} ->
+ ejabberd_sm ! {route,
+ jlib:make_jid("", "", ""),
+ jlib:make_jid(User, "", ""),
+ {xmlelement, "broadcast", [],
+ [{exit, "User removed"}]}},
+ catch ejabberd_auth:remove_user(User),
+ catch mod_roster:remove_user(User),
+ catch mod_offline:remove_user(User),
+ catch mod_vcard:remove_user(User),
+ catch mod_private:remove_user(User),
+ {result, []};
+ _ ->
+ {error, ?ERR_BAD_REQUEST}
+ end;
set_sm_form(_, _, Lang, XData) ->
{error, ?ERR_SERVICE_UNAVAILABLE}.