aboutsummaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authornick <nick@lupine.me.uk>2009-07-24 01:34:25 +0100
committernick <nick@lupine.me.uk>2009-07-24 01:34:25 +0100
commitf842b8417a1f19efd29429101a323be0331b612e (patch)
tree6da4d4781594839098b250622980a009b7c32d0a /core
parente8ed97e6d675328c32a1af8840756297d3fb91f7 (diff)
downloadprosody-f842b8417a1f19efd29429101a323be0331b612e.tar.gz
prosody-f842b8417a1f19efd29429101a323be0331b612e.zip
Switch to using a more generic credentials_callback/handler for SASL auth.
Not all authentication mechanisms have the same requirements; it makes sense to provide them only with the information they require (and for them to depend on that) so that as many auth mechanisms as possible can be supported with a variety of credentials-storing schemes. This commit patches that together
Diffstat (limited to 'core')
-rw-r--r--core/usermanager.lua11
1 files changed, 8 insertions, 3 deletions
diff --git a/core/usermanager.lua b/core/usermanager.lua
index bd7772ca..c7136e8f 100644
--- a/core/usermanager.lua
+++ b/core/usermanager.lua
@@ -1,7 +1,7 @@
-- Prosody IM
-- Copyright (C) 2008-2009 Matthew Wild
-- Copyright (C) 2008-2009 Waqas Hussain
---
+--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--
@@ -23,6 +23,7 @@ module "usermanager"
function validate_credentials(host, username, password, method)
log("debug", "User '%s' is being validated", username);
local credentials = datamanager.load(username, host, "accounts") or {};
+
if method == nil then method = "PLAIN"; end
if method == "PLAIN" and credentials.password then -- PLAIN, do directly
if password == credentials.password then
@@ -30,7 +31,7 @@ function validate_credentials(host, username, password, method)
else
return nil, "Auth failed. Invalid username or password.";
end
- end
+ end
-- must do md5
-- make credentials md5
local pwd = credentials.password;
@@ -49,6 +50,10 @@ function validate_credentials(host, username, password, method)
end
end
+function get_password(username, host)
+ return (datamanager.load(username, host, "accounts") or {}).password
+end
+
function user_exists(username, host)
return datamanager.load(username, host, "accounts") ~= nil; -- FIXME also check for empty credentials
end
@@ -58,7 +63,7 @@ function create_user(username, password, host)
end
function get_supported_methods(host)
- local methods = {["PLAIN"] = true}; -- TODO this should be taken from the config
+ local methods = {["PLAIN"] = true}; -- TODO this should be taken from the config
methods["DIGEST-MD5"] = true;
return methods;
end