diff options
author | Riley L. <riley@e926.de> | 2024-11-04 14:44:56 +0100 |
---|---|---|
committer | Riley L. <riley@e926.de> | 2024-11-04 14:44:56 +0100 |
commit | e93520702a78adba65eca3546fb815fd729469be (patch) | |
tree | 81be3dbc9b2c608b77e8ab4be48cf13ca344461e /abrechenbarkeit.lua | |
parent | 373242c40a6d70c9adb317760ac73211edff867b (diff) | |
download | abrechenbarkeit-e93520702a78adba65eca3546fb815fd729469be.tar abrechenbarkeit-e93520702a78adba65eca3546fb815fd729469be.tar.bz2 abrechenbarkeit-e93520702a78adba65eca3546fb815fd729469be.tar.zst |
move username validation to dedicated function; unify error messages into boxes
Diffstat (limited to 'abrechenbarkeit.lua')
-rwxr-xr-x | abrechenbarkeit.lua | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/abrechenbarkeit.lua b/abrechenbarkeit.lua index d4eacc3..8eedccd 100755 --- a/abrechenbarkeit.lua +++ b/abrechenbarkeit.lua @@ -112,9 +112,13 @@ local function respond(status, title, body) )) end +local function error_box(message) + return string.format([[<div class="notif error"><p>Error: %s</p></div>]], message) +end + local function respond_error(message) respond(400, "Error", function() - print(string.format("<p>Error: %s</p>", escape(message))) + print(error_box(message)) end) end @@ -213,10 +217,6 @@ local function get_active_users() return users end -local function error_box(message) - return string.format([[<div class="notif error"><p>Error: %s</p></div>]], message) -end - local function r_user_post(username) local data = form_data() local amount = tonumber(data.amount) @@ -425,10 +425,17 @@ local function r_index() end) end +local function validate_username(username) + -- disallow leading or traling whitespace + return username ~= nil + and username:match("^([%w_ -]+)$") ~= nil + and username:match("^%s") == nil + and username:match("%s$") == nil +end + local function r_create_user() local username = query.create_user - -- gsub to remove whitespace. disallows username made up entirely of whitespace - if username:gsub("%s+", ""):match("^([%w_ -]+)$") == nil then + if not validate_username(username) then return respond_error("invalid username " .. username) end return redirect(string.format("/%s", urlencode(username))) @@ -550,7 +557,7 @@ if path == "/" then end else local username = extract_username() - if username == nil then + if username == nil or not validate_username(username) then return respond_error("username invalid") elseif query.log then return r_log(username) |