From f42c76d830537993f849bb92d38564bd45d2e087 Mon Sep 17 00:00:00 2001 From: Kasey Fitton Date: Wed, 13 Nov 2024 20:31:12 +0000 Subject: [PATCH] fix(esx_identity/server): DoB validation not respecting config --- [core]/esx_identity/server/main.lua | 42 +++++++++++++++++++---------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/[core]/esx_identity/server/main.lua b/[core]/esx_identity/server/main.lua index a72e0b65..e28eeffb 100644 --- a/[core]/esx_identity/server/main.lua +++ b/[core]/esx_identity/server/main.lua @@ -44,9 +44,24 @@ local function saveIdentityToDatabase(identifier, identity) MySQL.update.await("UPDATE users SET firstname = ?, lastname = ?, dateofbirth = ?, sex = ?, height = ? WHERE identifier = ?", { identity.firstName, identity.lastName, identity.dateOfBirth, identity.sex, identity.height, identifier }) end +local function formatDate(str) + local d, m, y = string.match(str, "(%d+)/(%d+)/(%d+)") + local date = str + + if Config.DateFormat == "MM/DD/YYYY" then + date = m .. "/" .. d .. "/" .. y + elseif Config.DateFormat == "YYYY/MM/DD" then + date = y .. "/" .. m .. "/" .. d + end + + return date +end + local function checkDOBFormat(str) str = tostring(str) - if not string.match(str, "(%d%d)/(%d%d)/(%d%d%d%d)") then + local format = string.match(str, "(%d+)/(%d+)/(%d+)") + + if not format then return false end @@ -56,6 +71,18 @@ local function checkDOBFormat(str) d = tonumber(d) y = tonumber(y) + if Config.DateFormat == "MM/DD/YYYY" then + local month = m + local day = d + m = day + d = month + elseif Config.DateFormat == "YYYY/MM/DD" then + local year = y + local day = d + y = day + d = year + end + if ((d <= 0) or (d > 31)) or ((m <= 0) or (m > 12)) or ((y <= Config.LowestYear) or (y > Config.HighestYear)) then return false elseif m == 4 or m == 6 or m == 9 or m == 11 then @@ -71,19 +98,6 @@ local function checkDOBFormat(str) end end -local function formatDate(str) - local d, m, y = string.match(str, "(%d+)/(%d+)/(%d+)") - local date = str - - if Config.DateFormat == "MM/DD/YYYY" then - date = m .. "/" .. d .. "/" .. y - elseif Config.DateFormat == "YYYY/MM/DD" then - date = y .. "/" .. m .. "/" .. d - end - - return date -end - local function checkAlphanumeric(str) return (string.match(str, "%W")) end