Mercurial > prosody-hg
comparison core/usermanager.lua @ 3218:032b81731f0f
usermanager: Handle checking for global admins on behalf of providers
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Wed, 09 Jun 2010 21:24:20 +0100 |
| parents | 09174a6e8366 |
| children | c116c4b2db5a |
comparison
equal
deleted
inserted
replaced
| 3217:382f70627ff9 | 3218:032b81731f0f |
|---|---|
| 88 function get_provider(host) | 88 function get_provider(host) |
| 89 return hosts[host].users; | 89 return hosts[host].users; |
| 90 end | 90 end |
| 91 | 91 |
| 92 function is_admin(jid, host) | 92 function is_admin(jid, host) |
| 93 local is_admin; | |
| 93 if host and host ~= "*" then | 94 if host and host ~= "*" then |
| 94 return hosts[host].users.is_admin(jid); | 95 is_admin = hosts[host].users.is_admin(jid); |
| 95 else -- Test only whether this JID is a global admin | 96 end |
| 97 if not is_admin then -- Test only whether this JID is a global admin | |
| 96 local admins = config.get("*", "core", "admins"); | 98 local admins = config.get("*", "core", "admins"); |
| 97 if type(admins) == "table" then | 99 if type(admins) == "table" then |
| 98 jid = jid_bare(jid); | 100 jid = jid_bare(jid); |
| 99 for _,admin in ipairs(admins) do | 101 for _,admin in ipairs(admins) do |
| 100 if admin == jid then return true; end | 102 if admin == jid then |
| 103 is_admin = true; | |
| 104 break; | |
| 105 end | |
| 101 end | 106 end |
| 102 elseif admins then | 107 elseif admins then |
| 103 log("error", "Option 'admins' for host '%s' is not a table", host); | 108 log("error", "Option 'admins' for host '%s' is not a table", host); |
| 104 end | 109 end |
| 105 return nil; | |
| 106 end | 110 end |
| 111 return is_admin; | |
| 107 end | 112 end |
| 108 | 113 |
| 109 return _M; | 114 return _M; |
