From 636f13bc0740cf5f3078c0c632882b01193704d6 Mon Sep 17 00:00:00 2001 From: Nils G <nils.gondermann@ruhr-uni-bochum.de> Date: Thu, 30 Apr 2020 14:35:22 +0200 Subject: [PATCH] Add definition rule for input field maxlength. Enforce on Client and Server side --- controllers/player.py | 12 ++++++++++++ static/game/debug/renderer.js | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/controllers/player.py b/controllers/player.py index e7b1106..329b249 100644 --- a/controllers/player.py +++ b/controllers/player.py @@ -79,6 +79,15 @@ def submit(): new_input = {"submit": parameters["submit"]} if JSON_CONTAINS(parameters, [('inputs', dict)]): + + #Load role definitions for additional validation (e.g. maxlength) + elements = B64_TO_JSON(room_record.roles)[player_record.role]["elements"] + input_definitions = {} + for element in elements: + if element["type"] == "input": + input_definitions[element["name"]] = element + + inputs = parameters["inputs"] for key in inputs: @@ -87,6 +96,9 @@ def submit(): if (not isinstance(inputs[key], str)) or (keytest != key): return(FAIL(CODE_MISSING)) + if input_definitions[key]["length"] and len(inputs[key]) > input_definitions[key]["length"]: + return(FAIL(CODE_MISSING)) + inputs[key] = ''.join(c for c in inputs[key] if (c.isalnum() or c == " ")) new_input["inputs"] = inputs diff --git a/static/game/debug/renderer.js b/static/game/debug/renderer.js index c4c971c..def0bac 100644 --- a/static/game/debug/renderer.js +++ b/static/game/debug/renderer.js @@ -63,6 +63,7 @@ function renderRole(_definition, _roleIdle) { var c = element["class"]; var name = element["name"]; var value = element["value"]; + var length = element["length"]; if(prompt){ for(var varname in prompt){ @@ -81,6 +82,9 @@ function renderRole(_definition, _roleIdle) { case "input": e = $("<input class='game_input' type='text'/>"); e.attr("placeholder", value); + if(length) { + e.attr("maxlength", length); + } if(!prompt) { e.attr("disabled", "true"); } -- GitLab