Changeset

2937:9380838a19dc

Merge 0.7/waqas->0.7/MattJ
author Matthew Wild <mwild1@gmail.com>
date Wed, 24 Mar 2010 22:40:53 +0000
parents 2933:e68ff49fa79b (current diff) 2936:c186b4883b8d (diff)
children 2938:07f3b14d38d1 2939:dc73cbc69bd5
files
diffstat 3 files changed, 12 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/core/usermanager.lua	Wed Mar 24 22:34:59 2010 +0000
+++ b/core/usermanager.lua	Wed Mar 24 22:40:53 2010 +0000
@@ -55,6 +55,15 @@
 	if is_cyrus(host) then return nil, "Passwords unavailable for Cyrus SASL."; end
 	return (datamanager.load(username, host, "accounts") or {}).password
 end
+function set_password(username, host, password)
+	if is_cyrus(host) then return nil, "Passwords unavailable for Cyrus SASL."; end
+	local account = datamanager.load(username, host, "accounts");
+	if account then
+		account.password = password;
+		return datamanager.store(username, host, "accounts", account);
+	end
+	return nil, "Account not available.";
+end
 
 function user_exists(username, host)
 	if is_cyrus(host) then return true; end
--- a/plugins/mod_register.lua	Wed Mar 24 22:34:59 2010 +0000
+++ b/plugins/mod_register.lua	Wed Mar 24 22:40:53 2010 +0000
@@ -12,6 +12,7 @@
 local datamanager = require "util.datamanager";
 local usermanager_user_exists = require "core.usermanager".user_exists;
 local usermanager_create_user = require "core.usermanager".create_user;
+local usermanager_set_password = require "core.usermanager".set_password;
 local datamanager_store = require "util.datamanager".store;
 local os_time = os.time;
 local nodeprep = require "util.encodings".stringprep.nodeprep;
@@ -34,7 +35,7 @@
 				local username, host = session.username, session.host;
 				--session.send(st.error_reply(stanza, "cancel", "not-allowed"));
 				--return;
-				usermanager_create_user(username, nil, host); -- Disable account
+				usermanager_set_password(username, host, nil); -- Disable account
 				-- FIXME the disabling currently allows a different user to recreate the account
 				-- we should add an in-memory account block mode when we have threading
 				session.send(st.reply(stanza));
@@ -69,7 +70,7 @@
 					username = nodeprep(table.concat(username));
 					password = table.concat(password);
 					if username == session.username then
-						if usermanager_create_user(username, password, session.host) then -- password change -- TODO is this the right way?
+						if usermanager_set_password(username, session.host, password) then
 							session.send(st.reply(stanza));
 						else
 							-- TODO unable to write file, file may be locked, etc, what's the correct error?
--- a/util/sasl/digest-md5.lua	Wed Mar 24 22:34:59 2010 +0000
+++ b/util/sasl/digest-md5.lua	Wed Mar 24 22:40:53 2010 +0000
@@ -35,8 +35,6 @@
 	local function serialize(message)
 		local data = ""
 
-		if type(message) ~= "table" then error("serialize needs an argument of type table.") end
-
 		-- testing all possible values
 		if message["realm"] then data = data..[[realm="]]..message.realm..[[",]] end
 		if message["nonce"] then data = data..[[nonce="]]..message.nonce..[[",]] end