Mercurial > prosody-modules
comparison mod_http_admin_api/mod_http_admin_api.lua @ 4374:e707810a943e
mod_http_admin_api: Improve invite API and support password resets
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 23 Jan 2021 11:59:23 +0000 |
parents | 3d01bc4547b2 |
children | 03cf0d41b272 |
comparison
equal
deleted
inserted
replaced
4373:41ac0941b217 | 4374: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; |