plugins/mod_authz_internal.lua
changeset 12734 427dd01f0864
parent 12667 cf88f6b03942
child 12737 2167e1639aab
equal deleted inserted replaced
12733:73a45ba6e3f1 12734:427dd01f0864
     1 local array = require "util.array";
     1 local array = require "util.array";
     2 local it = require "util.iterators";
     2 local it = require "util.iterators";
     3 local set = require "util.set";
     3 local set = require "util.set";
     4 local jid_split, jid_bare = require "util.jid".split, require "util.jid".bare;
     4 local jid_split, jid_bare, jid_host = import("util.jid", "split", "bare", "host");
     5 local normalize = require "util.jid".prep;
     5 local normalize = require "util.jid".prep;
     6 local roles = require "util.roles";
     6 local roles = require "util.roles";
     7 
     7 
     8 local config_global_admin_jids = module:context("*"):get_option_set("admins", {}) / normalize;
     8 local config_global_admin_jids = module:context("*"):get_option_set("admins", {}) / normalize;
     9 local config_admin_jids = module:get_option_inherited_set("admins", {}) / normalize;
     9 local config_admin_jids = module:get_option_inherited_set("admins", {}) / normalize;
    10 local host = module.host;
    10 local host = module.host;
       
    11 local host_suffix = host:gsub("^[^%.]+%.", "");
       
    12 
       
    13 local hosts = prosody.hosts;
       
    14 local is_component = hosts[host].type == "component";
       
    15 local host_user_role, server_user_role;
       
    16 if is_component then
       
    17 	host_user_role = module:get_option_string("host_user_role", "prosody:user");
       
    18 	server_user_role = module:get_option_string("server_user_role");
       
    19 end
    11 
    20 
    12 local role_store = module:open_store("account_roles");
    21 local role_store = module:open_store("account_roles");
    13 local role_map_store = module:open_store("account_roles", "map");
    22 local role_map_store = module:open_store("account_roles", "map");
    14 
    23 
    15 local role_registry = {};
    24 local role_registry = {};
   223 	local bare_jid = jid_bare(jid);
   232 	local bare_jid = jid_bare(jid);
   224 	if config_global_admin_jids:contains(bare_jid) then
   233 	if config_global_admin_jids:contains(bare_jid) then
   225 		return role_registry["prosody:operator"];
   234 		return role_registry["prosody:operator"];
   226 	elseif config_admin_jids:contains(bare_jid) then
   235 	elseif config_admin_jids:contains(bare_jid) then
   227 		return role_registry["prosody:admin"];
   236 		return role_registry["prosody:admin"];
       
   237 	elseif is_component then
       
   238 		local user_host = jid_host(bare_jid);
       
   239 		if host_user_role and user_host == host_suffix then
       
   240 			return role_registry[host_user_role];
       
   241 		elseif server_user_role and hosts[user_host] then
       
   242 			return role_registry[server_user_role];
       
   243 		end
   228 	end
   244 	end
   229 	return nil;
   245 	return nil;
   230 end
   246 end
   231 
   247 
   232 function set_jid_role(jid, role_name) -- luacheck: ignore 212
   248 function set_jid_role(jid, role_name) -- luacheck: ignore 212