94 :tag("password"):up(); |
94 :tag("password"):up(); |
95 session.send(reply); |
95 session.send(reply); |
96 else -- stanza.attr.type == "set" |
96 else -- stanza.attr.type == "set" |
97 if query.tags[1] and query.tags[1].name == "remove" then |
97 if query.tags[1] and query.tags[1].name == "remove" then |
98 local username, host = session.username, session.host; |
98 local username, host = session.username, session.host; |
|
99 |
|
100 local old_session_close = session.close; |
|
101 session.close = function(session, ...) |
|
102 session.send(st.reply(stanza)); |
|
103 return old_session_close(session, ...); |
|
104 end |
99 |
105 |
100 local ok, err = usermanager_delete_user(username, host); |
106 local ok, err = usermanager_delete_user(username, host); |
101 |
107 |
102 if not ok then |
108 if not ok then |
103 module:log("debug", "Removing user account %s@%s failed: %s", username, host, err); |
109 module:log("debug", "Removing user account %s@%s failed: %s", username, host, err); |
|
110 session.close = old_session_close; |
104 session.send(st.error_reply(stanza, "cancel", "service-unavailable", err)); |
111 session.send(st.error_reply(stanza, "cancel", "service-unavailable", err)); |
105 return true; |
112 return true; |
106 end |
113 end |
107 |
114 |
108 session.send(st.reply(stanza)); |
|
109 module:log("info", "User removed their account: %s@%s", username, host); |
115 module:log("info", "User removed their account: %s@%s", username, host); |
110 module:fire_event("user-deregistered", { username = username, host = host, source = "mod_register", session = session }); |
116 module:fire_event("user-deregistered", { username = username, host = host, source = "mod_register", session = session }); |
111 else |
117 else |
112 local username = nodeprep(query:get_child("username"):get_text()); |
118 local username = nodeprep(query:get_child("username"):get_text()); |
113 local password = query:get_child("password"):get_text(); |
119 local password = query:get_child("password"):get_text(); |