Software / code / prosody
Comparison
core/usermanager.lua @ 3992:73075b004e77
usermanager: Have methods not implemented in the active provider fall back to the null provider (later we can add support for chains of providers)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 04 Jan 2011 17:11:37 +0000 |
| parent | 3991:2b86d7705f4e |
| child | 3993:b71e5ecc694b |
comparison
equal
deleted
inserted
replaced
| 3991:2b86d7705f4e | 3992:73075b004e77 |
|---|---|
| 29 return setmetatable({name = "null", get_sasl_handler = dummy_get_sasl_handler}, { | 29 return setmetatable({name = "null", get_sasl_handler = dummy_get_sasl_handler}, { |
| 30 __index = function(self, method) return dummy; end | 30 __index = function(self, method) return dummy; end |
| 31 }); | 31 }); |
| 32 end | 32 end |
| 33 | 33 |
| 34 local provider_mt = { __index = new_null_provider() }; | |
| 35 | |
| 34 function initialize_host(host) | 36 function initialize_host(host) |
| 35 local host_session = hosts[host]; | 37 local host_session = hosts[host]; |
| 36 if host_session.type ~= "local" then return; end | 38 if host_session.type ~= "local" then return; end |
| 37 | 39 |
| 38 host_session.events.add_handler("item-added/auth-provider", function (event) | 40 host_session.events.add_handler("item-added/auth-provider", function (event) |
| 39 local provider = event.item; | 41 local provider = event.item; |
| 40 local auth_provider = config.get(host, "core", "authentication") or default_provider; | 42 local auth_provider = config.get(host, "core", "authentication") or default_provider; |
| 41 if config.get(host, "core", "anonymous_login") then auth_provider = "anonymous"; end -- COMPAT 0.7 | 43 if config.get(host, "core", "anonymous_login") then auth_provider = "anonymous"; end -- COMPAT 0.7 |
| 42 if provider.name == auth_provider then | 44 if provider.name == auth_provider then |
| 43 host_session.users = provider; | 45 host_session.users = setmetatable(provider, provider_mt); |
| 44 end | 46 end |
| 45 if host_session.users ~= nil and host_session.users.name ~= nil then | 47 if host_session.users ~= nil and host_session.users.name ~= nil then |
| 46 log("debug", "host '%s' now set to use user provider '%s'", host, host_session.users.name); | 48 log("debug", "host '%s' now set to use user provider '%s'", host, host_session.users.name); |
| 47 end | 49 end |
| 48 end); | 50 end); |