mod_http_admin_api/mod_http_admin_api.lua
changeset 4521 d6a3201a65c0
parent 4520 5bc706c2db8f
child 4580 cade5dac1003
equal deleted inserted replaced
4520:5bc706c2db8f 4521:d6a3201a65c0
     1 local usermanager = require "core.usermanager";
     1 local usermanager = require "core.usermanager";
     2 
     2 
     3 local json = require "util.json";
     3 local json = require "util.json";
     4 local st = require "util.stanza";
     4 local st = require "util.stanza";
       
     5 local array = require "util.array";
     5 
     6 
     6 module:depends("http");
     7 module:depends("http");
     7 
     8 
     8 local invites = module:depends("invites");
     9 local invites = module:depends("invites");
     9 local tokens = module:depends("tokenauth");
    10 local tokens = module:depends("tokenauth");
   172 		if ok and nick_item then
   173 		if ok and nick_item then
   173 			display_name = nick_item:get_child_text("nick", xmlns_nick);
   174 			display_name = nick_item:get_child_text("nick", xmlns_nick);
   174 		end
   175 		end
   175 	end
   176 	end
   176 
   177 
       
   178 	local roles = nil;
       
   179 	if usermanager.get_roles then
       
   180 		local roles_map = usermanager.get_roles(username.."@"..module.host, module.host)
       
   181 		roles = array()
       
   182 		if roles_map then
       
   183 			for role in pairs(roles_map) do
       
   184 				roles:push(role)
       
   185 			end
       
   186 		end
       
   187 	end
       
   188 
   177 	return {
   189 	return {
   178 		username = username;
   190 		username = username;
   179 		display_name = display_name;
   191 		display_name = display_name;
       
   192 		roles = roles;
   180 	};
   193 	};
   181 end
   194 end
   182 
   195 
   183 local function get_session_debug_info(session)
   196 local function get_session_debug_info(session)
   184 	local info = {
   197 	local info = {
   390 			_defaults_only = true;
   403 			_defaults_only = true;
   391 		}) then
   404 		}) then
   392 			final_user.display_name = new_user.display_name;
   405 			final_user.display_name = new_user.display_name;
   393 		end
   406 		end
   394 	end
   407 	end
       
   408 
       
   409 	if new_user.roles then
       
   410 		if not usermanager.set_roles then
       
   411 			return 500, "feature-not-implemented"
       
   412 		end
       
   413 
       
   414 		local backend_roles = {};
       
   415 		for _, role in ipairs(new_user.roles) do
       
   416 			backend_roles[role] = true;
       
   417 		end
       
   418 		local jid = username.."@"..module.host;
       
   419 		if not usermanager.set_roles(jid, module.host, backend_roles) then
       
   420 			module:log("error", "failed to set roles %q for %s", backend_roles, jid)
       
   421 			return 500
       
   422 		end
       
   423 	end
       
   424 
   395 	return 200;
   425 	return 200;
   396 end
   426 end
   397 
   427 
   398 function delete_user(event, username) --luacheck: ignore 212/event
   428 function delete_user(event, username) --luacheck: ignore 212/event
   399 	if not usermanager.delete_user(username, module.host) then
   429 	if not usermanager.delete_user(username, module.host) then