mod_http_admin_api/mod_http_admin_api.lua
changeset 4366 116c88c28532
parent 4365 7f1f3b79d991
child 4367 636d56bbad97
--- a/mod_http_admin_api/mod_http_admin_api.lua	Wed Jan 20 12:51:33 2021 +0000
+++ b/mod_http_admin_api/mod_http_admin_api.lua	Wed Jan 20 15:30:29 2021 +0100
@@ -155,6 +155,13 @@
 		end
 	end
 
+	return {
+		username = username;
+		display_name = display_name;
+	};
+end
+
+local function get_user_groups(username)
 	local groups;
 	do
 		local group_set = group_memberships:get_all(username);
@@ -165,12 +172,7 @@
 			end
 		end
 	end
-
-	return {
-		username = username;
-		display_name = display_name;
-		groups = groups;
-	};
+	return groups;
 end
 
 function list_users(event)
@@ -184,6 +186,19 @@
 end
 
 function get_user_by_name(event, username)
+	local property
+	do
+		local name, sub_path = username:match("^([^/]+)/(%w+)$");
+		if name then
+			username = name;
+			property = sub_path;
+		end
+	end
+
+	if property == "groups" then
+		return json.encode(get_user_groups(username));
+	end
+
 	local user_info = get_user_info(username);
 	if not user_info then
 		return 404;
@@ -206,6 +221,7 @@
 		table.insert(group_list, {
 			id = group_id;
 			name = group_id;
+			members = group_store:get(group_id);
 		});
 	end
 
@@ -214,15 +230,6 @@
 end
 
 function get_group_by_id(event, group_id)
-	local property;
-	do
-		local id, sub_path = group_id:match("^[^/]+/(%w+)$");
-		if id then
-			group_id = id;
-			property = sub_path;
-		end
-	end
-
 	local group = group_store:get(group_id);
 	if not group then
 		return 404;
@@ -230,13 +237,10 @@
 
 	event.response.headers["Content-Type"] = json_content_type;
 
-	if property == "members" then
-		return json.encode(group);
-	end
-
 	return json.encode({
 		id = group_id;
 		name = group_id;
+		members = group;
 	});
 end