From 92a50a6cb7fccf0bc4338aa536bf96dca5683b82 Mon Sep 17 00:00:00 2001 From: Miodec Date: Thu, 29 Jun 2023 13:52:27 +0200 Subject: [PATCH] stricter schema --- backend/src/api/schemas/result-schema.ts | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/backend/src/api/schemas/result-schema.ts b/backend/src/api/schemas/result-schema.ts index f006b95d9..5d63c0c38 100644 --- a/backend/src/api/schemas/result-schema.ts +++ b/backend/src/api/schemas/result-schema.ts @@ -29,8 +29,12 @@ const RESULT_SCHEMA = joi time: joi.number().allow(null), }), difficulty: joi.string().valid("normal", "expert", "master").required(), - funbox: joi.string().max(100).required(), - hash: joi.string().max(100).required(), + funbox: joi + .string() + .max(100) + .regex(/[\w#]+/) + .required(), + hash: joi.string().max(100).token().required(), incompleteTestSeconds: joi.number().min(0).required(), incompleteTests: joi .array() @@ -57,16 +61,23 @@ const RESULT_SCHEMA = joi keyOverlap: joi.number().min(0), lastKeyToEnd: joi.number().min(0), startToFirstKey: joi.number().min(0), - language: joi.string().max(100).required(), + language: joi + .string() + .max(100) + .regex(/[\w+]+/) + .required(), lazyMode: joi.boolean().required(), mode: joi .string() .valid("time", "words", "quote", "zen", "custom") .required(), - mode2: joi.string().required(), + mode2: joi + .string() + .regex(/^(\d)+|custom|zen/) + .required(), numbers: joi.boolean().required(), punctuation: joi.boolean().required(), - quoteLength: joi.number(), + quoteLength: joi.number().min(0).max(3), rawWpm: joi.number().min(0).max(420).required(), restartCount: joi.number().required(), tags: joi @@ -75,7 +86,7 @@ const RESULT_SCHEMA = joi .required(), testDuration: joi.number().required().min(1), timestamp: joi.date().timestamp().required(), - uid: joi.string().max(100).required(), + uid: joi.string().max(100).token().required(), wpm: joi.number().min(0).max(420).required(), wpmConsistency: joi.number().min(0).max(100).required(), })