Software /
code /
prosody
Comparison
core/usermanager.lua @ 3030:2be7801474fb
usermanager: Fix for is_admin to work with the new auth provider architecture
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Fri, 07 May 2010 21:42:45 +0100 |
parent | 2999:9a8f942433c4 |
child | 3031:421890f3f247 |
comparison
equal
deleted
inserted
replaced
3029:0c7beabfed5b | 3030:2be7801474fb |
---|---|
81 function provider.get_supported_methods() | 81 function provider.get_supported_methods() |
82 return {["PLAIN"] = true, ["DIGEST-MD5"] = true}; -- TODO this should be taken from the config | 82 return {["PLAIN"] = true, ["DIGEST-MD5"] = true}; -- TODO this should be taken from the config |
83 end | 83 end |
84 | 84 |
85 function provider.is_admin(jid) | 85 function provider.is_admin(jid) |
86 host = host or "*"; | |
87 local admins = config.get(host, "core", "admins"); | 86 local admins = config.get(host, "core", "admins"); |
88 if host ~= "*" and admins == config.get("*", "core", "admins") then | 87 if admins ~= config.get("*", "core", "admins") and type(admins) == "table" then |
89 return nil; | |
90 end | |
91 if type(admins) == "table" then | |
92 jid = jid_bare(jid); | 88 jid = jid_bare(jid); |
93 for _,admin in ipairs(admins) do | 89 for _,admin in ipairs(admins) do |
94 if admin == jid then return true; end | 90 if admin == jid then return true; end |
95 end | 91 end |
96 elseif admins then | 92 elseif admins then |
97 log("warn", "Option 'admins' for host '%s' is not a table", host); | 93 log("warn", "Option 'admins' for host '%s' is not a table", host); |
98 end | 94 end |
99 return nil; | 95 return is_admin(jid); -- Test whether it's a global admin instead |
100 end | 96 end |
101 return provider; | 97 return provider; |
102 end | 98 end |
103 | 99 |
104 function validate_credentials(host, username, password, method) | 100 function validate_credentials(host, username, password, method) |
124 function get_supported_methods(host) | 120 function get_supported_methods(host) |
125 return hosts[host].users.get_supported_methods(); | 121 return hosts[host].users.get_supported_methods(); |
126 end | 122 end |
127 | 123 |
128 function is_admin(jid, host) | 124 function is_admin(jid, host) |
129 return hosts[host].users.is_admin(jid); | 125 if host and host ~= "*" then |
126 return hosts[host].users.is_admin(jid); | |
127 else -- Test only whether this JID is a global admin | |
128 local admins = config.get("*", "core", "admins"); | |
129 if type(admins) == "table" then | |
130 jid = jid_bare(jid); | |
131 for _,admin in ipairs(admins) do | |
132 if admin == jid then return true; end | |
133 end | |
134 elseif admins then | |
135 log("warn", "Option 'admins' for host '%s' is not a table", host); | |
136 end | |
137 return nil; | |
138 end | |
130 end | 139 end |
131 | 140 |
132 return _M; | 141 return _M; |