plugins/mod_register.lua
changeset 5098 fca8b5946f6f
parent 5096 50a64fd79c07
child 5165 39bb9344f194
equal deleted inserted replaced
5097:6c52a7a881cc 5098:fca8b5946f6f
    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();