X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=core%2Fusermanager.lua;h=5e2e41fcd31c72a53afc2de9d6e6f901d38188ec;hb=893e9d4df9981fa666c98c0f5dd04920ae91e955;hp=1aea0de9b86f6c1ad17519023b86cd9e8c20f9cb;hpb=8f0252af68c84cad670d77e310aab7d21fd8fc45;p=prosody.git diff --git a/core/usermanager.lua b/core/usermanager.lua index 1aea0de9..5e2e41fc 100644 --- a/core/usermanager.lua +++ b/core/usermanager.lua @@ -24,11 +24,15 @@ local default_provider = "internal_plain"; module "usermanager" function new_null_provider() - local function dummy() end; + local function dummy() return nil, "method not implemented"; end; local function dummy_get_sasl_handler() return sasl_new(nil, {}); end - return setmetatable({name = "null", get_sasl_handler = dummy_get_sasl_handler}, { __index = function() return dummy; end }); + return setmetatable({name = "null", get_sasl_handler = dummy_get_sasl_handler}, { + __index = function(self, method) return dummy; end + }); end +local provider_mt = { __index = new_null_provider() }; + function initialize_host(host) local host_session = hosts[host]; if host_session.type ~= "local" then return; end @@ -36,8 +40,9 @@ function initialize_host(host) host_session.events.add_handler("item-added/auth-provider", function (event) local provider = event.item; local auth_provider = config.get(host, "core", "authentication") or default_provider; + if config.get(host, "core", "anonymous_login") then auth_provider = "anonymous"; end -- COMPAT 0.7 if provider.name == auth_provider then - host_session.users = provider; + host_session.users = setmetatable(provider, provider_mt); end if host_session.users ~= nil and host_session.users.name ~= nil then log("debug", "host '%s' now set to use user provider '%s'", host, host_session.users.name); @@ -51,6 +56,7 @@ function initialize_host(host) end); host_session.users = new_null_provider(); -- Start with the default usermanager provider local auth_provider = config.get(host, "core", "authentication") or default_provider; + if config.get(host, "core", "anonymous_login") then auth_provider = "anonymous"; end -- COMPAT 0.7 if auth_provider ~= "null" then modulemanager.load(host, "auth_"..auth_provider); end @@ -77,6 +83,10 @@ function create_user(username, password, host) return hosts[host].users.create_user(username, password); end +function delete_user(username, host) + return hosts[host].users.delete_user(username); +end + function get_sasl_handler(host) return hosts[host].users.get_sasl_handler(); end