diff options
Diffstat (limited to 'core/usermanager.lua')
-rw-r--r-- | core/usermanager.lua | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/core/usermanager.lua b/core/usermanager.lua index a97e2ad7..e4654698 100644 --- a/core/usermanager.lua +++ b/core/usermanager.lua @@ -16,6 +16,8 @@ local jid_bare = require "util.jid".bare; local config = require "core.configmanager"; local hosts = hosts; +local require_provisioning = config.get("*", "core", "cyrus_require_provisioning") or false; + local prosody = _G.prosody; module "usermanager" @@ -71,12 +73,13 @@ function new_default_provider(host) end function provider.user_exists(username) - if is_cyrus(host) then return true; end - return datamanager.load(username, host, "accounts") ~= nil; -- FIXME also check for empty credentials + if not(require_provisioning) and is_cyrus(host) then return true; end + local account, err = datamanager.load(username, host, "accounts") ~= nil; -- FIXME also check for empty credentials + return (account or err) ~= nil; -- FIXME also check for empty credentials end function provider.create_user(username, password) - if is_cyrus(host) then return nil, "Account creation/modification not available with Cyrus SASL."; end + if not(require_provisioning) and is_cyrus(host) then return nil, "Account creation/modification not available with Cyrus SASL."; end return datamanager.store(username, host, "accounts", {password = password}); end |