summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/web.vala30
-rw-r--r--templates/users/index.html8
2 files changed, 37 insertions, 1 deletions
diff --git a/src/web.vala b/src/web.vala
index 1b68ee4..8c87eed 100644
--- a/src/web.vala
+++ b/src/web.vala
@@ -47,7 +47,7 @@ public class WebServer {
string[] pathparts = path.split("/");
if(pathparts.length <= 2) {
- handler_todo(server, msg, path, query, client);
+ handler_user_list(server, msg, path, query, client);
} else {
int id = int.parse(pathparts[2]);
@@ -72,6 +72,34 @@ public class WebServer {
}
}
+ void handler_user_list(Soup.Server server, Soup.Message msg, string path, GLib.HashTable<string,string>? query, Soup.ClientContext client) {
+ try {
+ var session = new WebSession(server, msg, path, query, client);
+ if(!session.superuser) {
+ handler_403(server, msg, path, query, client);
+ return;
+ }
+
+ var t = new WebTemplate("users/index.html", session);
+ t.replace("TITLE", "KtT Shop System: User");
+ t.menu_set_active("users");
+ var data = "";
+ foreach(var m in db.get_member_ids()) {
+ try {
+ var name = db.get_username(m);
+ data += @"<tr><td>$m</td><td><a href=\"/users/$m\">$name</a></td></tr>";
+ } catch(WebSessionError e) {
+ }
+ }
+ t.replace("DATA", data);
+
+ msg.set_response("text/html", Soup.MemoryUse.COPY, t.data);
+ } catch(TemplateError e) {
+ stderr.printf(e.message+"\n");
+ handler_404(server, msg, path, query, client);
+ }
+ }
+
void handler_user_import(Soup.Server server, Soup.Message msg, string path, GLib.HashTable<string,string>? query, Soup.ClientContext client) {
try {
var session = new WebSession(server, msg, path, query, client);
diff --git a/templates/users/index.html b/templates/users/index.html
new file mode 100644
index 0000000..246e523
--- /dev/null
+++ b/templates/users/index.html
@@ -0,0 +1,8 @@
+<table class="sortable table table-bordered table-striped table-condensed">
+ <thead>
+ <tr><th>ID</th></th><th>Name</th></tr>
+ </thead>
+ <tbody>
+ {{{DATA}}}
+ </tbody>
+</table>