mod_http_admin_api/mod_http_admin_api.lua
changeset 4378 e707810a943e
parent 4375 3d01bc4547b2
child 4379 03cf0d41b272
equal deleted inserted replaced
4377:41ac0941b217 4378:e707810a943e
   134 	end
   134 	end
   135 	if not invite then
   135 	if not invite then
   136 		return 500;
   136 		return 500;
   137 	end
   137 	end
   138 
   138 
       
   139 	event.response.headers["Content-Type"] = json_content_type;
       
   140 	return json.encode(token_info_to_invite_info(invite));
       
   141 end
       
   142 
       
   143 function create_invite_type(event, invite_type)
       
   144 	local options;
       
   145 
       
   146 	local request = event.request;
       
   147 	if request.body and #request.body > 0 then
       
   148 		if request.headers.content_type ~= json_content_type then
       
   149 			module:log("warn", "Invalid content type");
       
   150 			return 400;
       
   151 		end
       
   152 		options = json.decode(event.request.body);
       
   153 		if not options then
       
   154 			module:log("warn", "Invalid JSON");
       
   155 			return 400;
       
   156 		end
       
   157 	else
       
   158 		options = {};
       
   159 	end
       
   160 
       
   161 	local invite;
       
   162 	if invite_type == "reset" then
       
   163 		if not options.username then
       
   164 			return 400;
       
   165 		end
       
   166 		invite = invites.create_account_reset(options.username, options.ttl);
       
   167 	elseif invite_type == "group" then
       
   168 		if not options.groups then
       
   169 			return 400;
       
   170 		end
       
   171 		invite = invites.create_group(options.groups, nil, options.ttl);
       
   172 	elseif invite_type == "account" then
       
   173 		invite = invites.create_account(options.username, nil, options.ttl);
       
   174 	else
       
   175 		return 400;
       
   176 	end
       
   177 	if not invite then
       
   178 		return 500;
       
   179 	end
   139 	event.response.headers["Content-Type"] = json_content_type;
   180 	event.response.headers["Content-Type"] = json_content_type;
   140 	return json.encode(token_info_to_invite_info(invite));
   181 	return json.encode(token_info_to_invite_info(invite));
   141 end
   182 end
   142 
   183 
   143 function delete_invite(event, invite_id) --luacheck: ignore 212/event
   184 function delete_invite(event, invite_id) --luacheck: ignore 212/event
   513 
   554 
   514 module:provides("http", {
   555 module:provides("http", {
   515 	route = check_auth {
   556 	route = check_auth {
   516 		["GET /invites"] = list_invites;
   557 		["GET /invites"] = list_invites;
   517 		["GET /invites/*"] = get_invite_by_id;
   558 		["GET /invites/*"] = get_invite_by_id;
   518 		["POST /invites"] = create_invite;
   559 		["POST /invites"] = create_invite; -- Deprecated
       
   560 		["POST /invites/*"] = create_invite_type;
   519 		["DELETE /invites/*"] = delete_invite;
   561 		["DELETE /invites/*"] = delete_invite;
   520 
   562 
   521 		["GET /users"] = list_users;
   563 		["GET /users"] = list_users;
   522 		["GET /users/*"] = get_user_by_name;
   564 		["GET /users/*"] = get_user_by_name;
   523 		["DELETE /users/*"] = delete_user;
   565 		["DELETE /users/*"] = delete_user;