core/usermanager.lua
changeset 3064 596303990c7c
parent 2934 060bb8217fea
child 3065 0b8bd6f6a9c7
child 3113 30896751dd43
equal deleted inserted replaced
3063:ca149818083d 3064:596303990c7c
    13 local ipairs = ipairs;
    13 local ipairs = ipairs;
    14 local hashes = require "util.hashes";
    14 local hashes = require "util.hashes";
    15 local jid_bare = require "util.jid".bare;
    15 local jid_bare = require "util.jid".bare;
    16 local config = require "core.configmanager";
    16 local config = require "core.configmanager";
    17 local hosts = hosts;
    17 local hosts = hosts;
       
    18 
       
    19 local require_provisioning = config.get("*", "core", "cyrus_require_provisioning") or false;
    18 
    20 
    19 module "usermanager"
    21 module "usermanager"
    20 
    22 
    21 local function is_cyrus(host) return config.get(host, "core", "sasl_backend") == "cyrus"; end
    23 local function is_cyrus(host) return config.get(host, "core", "sasl_backend") == "cyrus"; end
    22 
    24 
    64 	end
    66 	end
    65 	return nil, "Account not available.";
    67 	return nil, "Account not available.";
    66 end
    68 end
    67 
    69 
    68 function user_exists(username, host)
    70 function user_exists(username, host)
    69 	if is_cyrus(host) then return true; end
    71 	if not(require_provisioning) and is_cyrus(host) then return true; end
    70 	return datamanager.load(username, host, "accounts") ~= nil; -- FIXME also check for empty credentials
    72 	return datamanager.load(username, host, "accounts") ~= nil; -- FIXME also check for empty credentials
    71 end
    73 end
    72 
    74 
    73 function create_user(username, password, host)
    75 function create_user(username, password, host)
    74 	if is_cyrus(host) then return nil, "Account creation/modification not available with Cyrus SASL."; end
    76 	if not(require_provisioning) and is_cyrus(host) then return nil, "Account creation/modification not available with Cyrus SASL."; end
    75 	return datamanager.store(username, host, "accounts", {password = password});
    77 	return datamanager.store(username, host, "accounts", {password = password});
    76 end
    78 end
    77 
    79 
    78 function get_supported_methods(host)
    80 function get_supported_methods(host)
    79 	return {["PLAIN"] = true, ["DIGEST-MD5"] = true}; -- TODO this should be taken from the config
    81 	return {["PLAIN"] = true, ["DIGEST-MD5"] = true}; -- TODO this should be taken from the config