diff --git a/config b/config
index a97c335..67f66d6 100644
--- a/config
+++ b/config
@@ -1,6 +1,6 @@
server {
port 3117
- debug false
+ debug true
http_logging true
static_prefix "public"
}
diff --git a/data/dk.db b/data/dk.db
index e8f4d9b..5bbc180 100644
Binary files a/data/dk.db and b/data/dk.db differ
diff --git a/fs/templates/admin/edit_user.html b/fs/templates/admin/edit_user.html
new file mode 100644
index 0000000..f8d416c
--- /dev/null
+++ b/fs/templates/admin/edit_user.html
@@ -0,0 +1,19 @@
+
{{ user.username }}
+
+Account-level Details
+
diff --git a/fs/templates/admin/users.html b/fs/templates/admin/users.html
new file mode 100644
index 0000000..d06d455
--- /dev/null
+++ b/fs/templates/admin/users.html
@@ -0,0 +1,20 @@
+
+ Here's the list of all currently registered users.
+
+
+
+
+
+ id |
+ username |
+
+
+
+ {{ for i, u in ipairs(users) do }}
+
+ {{ u.id }} |
+ {{ u.username }} |
+
+ {{ end }}
+
+
diff --git a/libs/admin.lua b/libs/admin.lua
index d0bfb5b..ddf0be2 100644
--- a/libs/admin.lua
+++ b/libs/admin.lua
@@ -1,10 +1,9 @@
local m = {}
-function m.page(template, title, ext_data)
- if not title then
- local title = "Admin"
- else
- local title = "Admin: "..title
+function m.page(template, page_title, ext_data)
+ local title = "Admin"
+ if page_title ~= "" and page_title ~= nil then
+ title = "Admin: "..page_title
end
local data = table.merge({
diff --git a/moonshark b/moonshark
index 467589d..2bdbea8 100755
Binary files a/moonshark and b/moonshark differ
diff --git a/routes/admin/users/[id]/get.lua b/routes/admin/users/[id]/get.lua
new file mode 100644
index 0000000..cff62ea
--- /dev/null
+++ b/routes/admin/users/[id]/get.lua
@@ -0,0 +1,9 @@
+--[[
+ GET /admin/users/[id]
+ Shows the editing page for the given user
+]]
+
+local a = require("admin")
+
+local user = sqlite("dk"):get_one("SELECT * FROM users WHERE id = :i", {i = ctx.params.id})
+return a.page("edit_user.html", "editing "..user.username, {user = user})
diff --git a/routes/admin/users/get.lua b/routes/admin/users/get.lua
new file mode 100644
index 0000000..a44bb2c
--- /dev/null
+++ b/routes/admin/users/get.lua
@@ -0,0 +1,9 @@
+--[[
+ GET /admin/users
+ Shows the list of all users currently registered. Jumping off point for editing user data.
+]]
+
+local a = require("admin")
+
+local users = sqlite("dk"):query("SELECT id, username FROM users")
+return a.page("users.html", "Users", {users = users})
diff --git a/setup.lua b/setup.lua
index ff4b3c9..4e14f6b 100644
--- a/setup.lua
+++ b/setup.lua
@@ -18,32 +18,27 @@ db:create_table("babble",
db:create_table("item_blueprints",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
- "type INTEGER NOT NULL DEFAULT 0",
- "tier INTEGER NOT NULL DEFAULT 0",
- "rarity INTEGER NOT NULL DEFAULT 0",
- "base_value INTEGER NOT NULL DEFAULT 0",
- "attributes_id INTEGER NOT NULL DEFAULT 0",
- "stackable INTEGER NOT NULL DEFAULT 0",
- "max_stack INTEGER NOT NULL DEFAULT 1",
+ "type INTEGER DEFAULT 0",
+ "tier INTEGER DEFAULT 0",
+ "rarity INTEGER DEFAULT 0",
+ "base_value INTEGER DEFAULT 0",
+ "attributes_id INTEGER DEFAULT 0",
+ "stackable INTEGER DEFAULT 0",
+ "max_stack INTEGER DEFAULT 1",
"name TEXT UNIQUE NOT NULL",
"lore TEXT",
- "special TEXT NOT NULL DEFAULT ''"
+ "special TEXT"
)
db:create_table("items",
"id INTEGER PRIMARY KEY AUTOINCREMENT",
- "type INTEGER NOT NULL DEFAULT 0",
- "tier INTEGER NOT NULL DEFAULT 0",
- "rarity INTEGER NOT NULL DEFAULT 0",
- "crafted INTEGER NOT NULL DEFAULT 0",
- "crafter_id INTEGER NOT NULL DEFAULT 0",
- "base_value INTEGER NOT NULL DEFAULT 0",
- "attributes_id INTEGER NOT NULL DEFAULT 0",
- "stackable INTEGER NOT NULL DEFAULT 0",
- "max_stack INTEGER NOT NULL DEFAULT 1",
- "name TEXT UNIQUE NOT NULL",
- "lore TEXT",
- "special TEXT NOT NULL DEFAULT ''"
+ "blueprint_id INTEGER NOT NULL",
+ "attributes_id INTEGER DEFAULT 0",
+ "crafter_id INTEGER DEFAULT 0",
+ "condition INTEGER DEFAULT 0",
+ "forge_level INTEGER DEFAULT 0",
+ "name_override TEXT",
+ "special TEXT"
)
db:create_table("user_attributes",
@@ -206,27 +201,27 @@ db:create_table("users",
"username TEXT UNIQUE NOT NULL",
"password TEXT NOT NULL",
"email TEXT UNIQUE NOT NULL",
- "verified INTEGER NOT NULL DEFAULT 0",
- "verify_token TEXT NOT NULL DEFAULT ''",
- "registered INTEGER NOT NULL DEFAULT (unixepoch())",
- "last_login INTEGER NOT NULL DEFAULT (unixepoch())",
- "auth_level INTEGER NOT NULL DEFAULT 0",
- "lat INTEGER NOT NULL DEFAULT 0",
- "lon INTEGER NOT NULL DEFAULT 0",
- "class_id INTEGER NOT NULL DEFAULT 1",
+ "verified INTEGER DEFAULT 0",
+ "verify_token TEXT DEFAULT ''",
+ "registered INTEGER DEFAULT (unixepoch())",
+ "last_login INTEGER DEFAULT (unixepoch())",
+ "auth_level INTEGER DEFAULT 0",
+ "lat INTEGER DEFAULT 0",
+ "lon INTEGER DEFAULT 0",
+ "class_id INTEGER DEFAULT 1",
"attributes_id INTEGER NOT NULL",
- "currently INTEGER NOT NULL DEFAULT 0",
- "fight_id INTEGER NOT NULL DEFAULT 0",
- "hp INTEGER NOT NULL default 15",
- "max_hp INTEGER NOT NULL default 15",
- "mp INTEGER NOT NULL default 0",
- "max_mp INTEGER NOT NULL default 0",
- "tp INTEGER NOT NULL default 10",
- "max_tp INTEGER NOT NULL default 10",
- "level INTEGER NOT NULL default 1",
- "gold INTEGER NOT NULL default 100",
- "exp INTEGER NOT NULL default 0",
- "drop_code INTEGER NOT NULL default 0",
+ "currently INTEGER DEFAULT 0",
+ "fight_id INTEGER DEFAULT 0",
+ "hp INTEGER DEFAULT 15",
+ "max_hp INTEGER DEFAULT 15",
+ "mp INTEGER DEFAULT 0",
+ "max_mp INTEGER DEFAULT 0",
+ "tp INTEGER DEFAULT 10",
+ "max_tp INTEGER DEFAULT 10",
+ "level INTEGER DEFAULT 1",
+ "gold INTEGER DEFAULT 100",
+ "exp INTEGER DEFAULT 0",
+ "drop_code INTEGER DEFAULT 0",
"spells TEXT",
"maps TEXT"
)
@@ -263,4 +258,7 @@ db:commit()
local time = math.roundto(microtime(true) - start, 4)
print(iparse("Database setup in {{{}}} seconds.", {time}))
+
+env_set("game_open", true)
+
return true