# HG changeset patch # User Matthew Wild # Date 1610905842 0 # Node ID c0b1b2a61e3c014c3a435bb16f7724a5cb3bfb9b # Parent 270025e76bf8dc99823765ef30851891632754a3 mod_http_admin_api: Add support for creating reusable/group/custom-ttl invites diff -r 270025e76bf8 -r c0b1b2a61e3c mod_http_admin_api/mod_http_admin_api.lua --- a/mod_http_admin_api/mod_http_admin_api.lua Sun Jan 17 17:46:47 2021 +0000 +++ b/mod_http_admin_api/mod_http_admin_api.lua Sun Jan 17 17:50:42 2021 +0000 @@ -95,7 +95,32 @@ end function create_invite(event) - local invite = invites.create_account(nil, { source = "admin_api/"..event.session.username }); + local invite_options; + + local request = event.request; + if request.body and #request.body > 0 then + if request.headers.content_type ~= json_content_type then + module:log("warn", "Invalid content type"); + return 400; + end + invite_options = json.decode(event.request.body); + if not invite_options then + module:log("warn", "Invalid JSON"); + return 400; + end + end + + local invite; + if invite_options and invite_options.reusable then + invite = invites.create_group(invite_options.group, invite_options.ttl, { + source = "admin_api/"..event.session.username; + }); + else + invite = invites.create_account(nil, { + source = "admin_api/"..event.session.username; + groups = { invite_options.group }; + }); + end if not invite then return 500; end