X-Git-Url: https://git.auder.net/?p=vchess.git;a=blobdiff_plain;f=server%2Fmodels%2FChallenge.js;h=e1fb448bc678c0cd498a5b67ed4a914b47e68017;hp=96db0a2b431ad5237d8b08b4bcfceca3c4155212;hb=98db2082fd31e7a7bc0348e31ce119f39dbc31b3;hpb=98f3902b0f3c4370b07d534f5fcbca146a7a651d diff --git a/server/models/Challenge.js b/server/models/Challenge.js index 96db0a2b..e1fb448b 100644 --- a/server/models/Challenge.js +++ b/server/models/Challenge.js @@ -18,6 +18,39 @@ var db = require("../utils/database"); const ChallengeModel = { + checkChallenge: function(c) + { + const vid = parseInt(c.vid); + if (isNaN(vid) || vid <= 0) + return "Please select a variant"; + + const mainTime = parseInt(c.mainTime); + const increment = parseInt(c.increment); + if (isNaN(mainTime) || mainTime <= 0) + return "Main time should be strictly positive"; + if (isNaN(increment) || increment < 0) + return "Increment must be positive"; + + // Basic alphanumeric check for players names + let playerCount = 0; + for (p of c.players) + { + if (p.name.length > 0) + { + if (!p.name.match(/^[\w]+$/)) + return "Wrong characters in players names"; + playerCount++; + } + } + + if (playerCount > 0 && playerCount != c.nbPlayers-1) + return "None, or all of the opponent names must be filled" + + // Just characters check on server: + if (!c.fen.match(/^[a-zA-Z0-9, /-]*$/)) + return "Bad FEN string"; + }, + // fen cannot be undefined; TODO: generate fen on server instead create: function(c, cb) {