This commit is contained in:
itwrx 2025-05-15 08:58:20 -05:00
parent 0c9ed3e257
commit 55def9973a
1 changed files with 20 additions and 20 deletions

View File

@ -16,30 +16,30 @@ proc vSize(sizeName: string, sizeValue: int, inputName: string, inputData: strin
case inputType: case inputType:
of "string": of "string":
if not (inputData.len >= sizeValue): if not (inputData.len >= sizeValue):
msgString = inputName & " must have a character count of at least " & $sizeValue & " ." msgString = "The '" & inputName & "' field must have a character count of at least " & $sizeValue & " ."
addFormError(inputName, msgString) addFormError(inputName, msgString)
of "integer": of "integer":
if not (parseIntIf(inputData) >= sizeValue): if not (parseIntIf(inputData) >= sizeValue):
msgString = inputName & " must have a value of at least " & $sizeValue & " ." msgString = "The '" & inputName & "' field must have a value of at least " & $sizeValue & " ."
addFormError(inputName, msgString) addFormError(inputName, msgString)
of "float": of "float":
if not (parseFloat(inputData) >= sizeValue.float): if not (parseFloat(inputData) >= sizeValue.float):
msgString = inputName & " must have a value of at least " & $sizeValue & " ." msgString = "The '" & inputName & "' field must have a value of at least " & $sizeValue & " ."
addFormError(inputName, msgString) addFormError(inputName, msgString)
of "max": of "max":
#how we determine size depends on input type. #how we determine size depends on input type.
case inputType: case inputType:
of "string": of "string":
if inputData.len > sizeValue: if inputData.len > sizeValue:
msgString = inputName & " must have a character count that is no greater than " & $sizeValue & " ." msgString = "The '" & inputName & "' field must have a character count that is no greater than " & $sizeValue & " ."
addFormError(inputName, msgString) addFormError(inputName, msgString)
of "integer": of "integer":
if parseIntIf(inputData) > sizeValue: if parseIntIf(inputData) > sizeValue:
msgString = inputName & " must have a value that is no greater than " & $sizeValue & " ." msgString = "The '" & inputName & "' field must have a value that is no greater than " & $sizeValue & " ."
addFormError(inputName, msgString) addFormError(inputName, msgString)
of "float": of "float":
if parseFloat(inputData) > sizeValue.float: if parseFloat(inputData) > sizeValue.float:
msgString = inputName & " must have a value that is no greater than " & $sizeValue & " ." msgString = "The '" & inputName & "' field must have a value that is no greater than " & $sizeValue & " ."
addFormError(inputName, msgString) addFormError(inputName, msgString)
proc vType(inputName: string, inputData: string, validators: seq[string]): string = proc vType(inputName: string, inputData: string, validators: seq[string]): string =
@ -51,18 +51,18 @@ proc vType(inputName: string, inputData: string, validators: seq[string]): strin
discard parseIntIf(inputData) discard parseIntIf(inputData)
inputType = "integer" inputType = "integer"
except: except:
msgString = inputName & " must be a whole number." msgString = "The '" & inputName & "' field must be a whole number."
addFormError(inputName, msgString) addFormError(inputName, msgString)
elif "float" in validators: elif "float" in validators:
try: try:
discard parseFloat(inputData) discard parseFloat(inputData)
inputType = "float" inputType = "float"
except: except:
msgString = inputName & " must be a floating point number; a number with a decimal point. i.e. '1.5'" msgString = "The '" & inputName & "' field must be a floating point number; a number with a decimal point. i.e. '1.5'"
addFormError(inputName, msgString) addFormError(inputName, msgString)
elif "boolean" in validators: elif "boolean" in validators:
if (inputData == "true") or not (inputData == "false"): if (inputData == "true") or not (inputData == "false"):
msgString = inputName & " must be interpretable as a boolean. i.e. true, or false." msgString = "The '" & inputName & "' field must be interpretable as a boolean. i.e. true, or false."
addFormError(inputName, msgString) addFormError(inputName, msgString)
inputType = "boolean" inputType = "boolean"
else: else:
@ -92,7 +92,7 @@ proc vRegex(inputName: string, inputData: string, inputType: string, validators:
conditionFieldInputData = formInput(conditionField) conditionFieldInputData = formInput(conditionField)
if conditionFieldInputData.len == 0: if conditionFieldInputData.len == 0:
if inputData.len == 0: if inputData.len == 0:
msgString = inputName & " is required when " & conditionField & " isn't set." msgString = "The '" & inputName & "' field is required when " & conditionField & " isn't set."
addFormError(inputName, msgString) addFormError(inputName, msgString)
if match(v, re"^(must_unset_with):([a-z_]+)$"): if match(v, re"^(must_unset_with):([a-z_]+)$"):
let vNameSeq = v.split(':') let vNameSeq = v.split(':')
@ -102,7 +102,7 @@ proc vRegex(inputName: string, inputData: string, inputType: string, validators:
conditionFieldInputData = formInput(conditionField) conditionFieldInputData = formInput(conditionField)
if conditionFieldInputData.len > 0: if conditionFieldInputData.len > 0:
if inputData.len > 0: if inputData.len > 0:
msgString = inputName & " must be empty if " & conditionField & " is not." msgString = "The '" & inputName & "' field must be empty if " & conditionField & " is not."
addFormError(inputName, msgString) addFormError(inputName, msgString)
if match(v, re"^(required_with):([a-z_]+)$"): if match(v, re"^(required_with):([a-z_]+)$"):
let vNameSeq = v.split(':') let vNameSeq = v.split(':')
@ -112,7 +112,7 @@ proc vRegex(inputName: string, inputData: string, inputType: string, validators:
conditionFieldInputData = formInput(conditionField) conditionFieldInputData = formInput(conditionField)
if conditionFieldInputData.len > 0: if conditionFieldInputData.len > 0:
if inputData.len == 0: if inputData.len == 0:
msgString = inputName & " is also required when " & conditionField & " is set." msgString = "The '" & inputName & "' field is also required when " & conditionField & " is set."
addFormError(inputName, msgString) addFormError(inputName, msgString)
if match(v, re"^(required_with):([a-z_]+):(without):([a-z_]+)$"): if match(v, re"^(required_with):([a-z_]+):(without):([a-z_]+)$"):
let vNameSeq = v.split(':') let vNameSeq = v.split(':')
@ -125,7 +125,7 @@ proc vRegex(inputName: string, inputData: string, inputType: string, validators:
conditionField2InputData = formInput(conditionField2) conditionField2InputData = formInput(conditionField2)
if conditionField1InputData.len > 0 and not conditionField2InputData.len > 0: if conditionField1InputData.len > 0 and not conditionField2InputData.len > 0:
if inputData.len == 0: if inputData.len == 0:
msgString = inputName & " is required when " & conditionField1 & " is set and " & conditionField2 & " isn't set." msgString = "The '" & inputName & "' field is required when " & conditionField1 & " is set and " & conditionField2 & " isn't set."
addFormError(inputName, msgString) addFormError(inputName, msgString)
if match(v, re"^(required_with):([a-z_]+):(without):([a-z_]+):(and_without):([a-z_]+)$"): if match(v, re"^(required_with):([a-z_]+):(without):([a-z_]+):(and_without):([a-z_]+)$"):
let vNameSeq = v.split(':') let vNameSeq = v.split(':')
@ -141,7 +141,7 @@ proc vRegex(inputName: string, inputData: string, inputType: string, validators:
conditionField3InputData = formInput(conditionField3) conditionField3InputData = formInput(conditionField3)
if conditionField1InputData.len > 0 and not conditionField2InputData.len > 0 and not conditionField3InputData.len > 0: if conditionField1InputData.len > 0 and not conditionField2InputData.len > 0 and not conditionField3InputData.len > 0:
if inputData.len == 0: if inputData.len == 0:
msgString = inputName & " is required when " & conditionField1 & " is set and " & conditionField2 & " and " & conditionField3 & " aren't set." msgString = "The '" & inputName & "' field is required when " & conditionField1 & " is set and " & conditionField2 & " and " & conditionField3 & " aren't set."
addFormError(inputName, msgString) addFormError(inputName, msgString)
if match(v, re"^(required_when):([a-z_]+):(equals):([a-z_]+)$"): if match(v, re"^(required_when):([a-z_]+):(equals):([a-z_]+)$"):
let vNameSeq = v.split(':') let vNameSeq = v.split(':')
@ -152,7 +152,7 @@ proc vRegex(inputName: string, inputData: string, inputType: string, validators:
let conditionField2 = vNameSeq[3] let conditionField2 = vNameSeq[3]
if conditionField1InputData.len > 0 and conditionField1InputData == conditionField2: if conditionField1InputData.len > 0 and conditionField1InputData == conditionField2:
if inputData.len == 0: if inputData.len == 0:
msgString = inputName & " is required when " & conditionField1 & " equals " & conditionField2 msgString = "The '" & inputName & "' field is required when " & conditionField1 & " equals " & conditionField2
addFormError(inputName, msgString) addFormError(inputName, msgString)
if match(v, re"^(required_when):([a-z_]+):(equals):([a-z_]+):(without):([a-z_]+)$"): if match(v, re"^(required_when):([a-z_]+):(equals):([a-z_]+):(without):([a-z_]+)$"):
let vNameSeq = v.split(':') let vNameSeq = v.split(':')
@ -166,17 +166,17 @@ proc vRegex(inputName: string, inputData: string, inputType: string, validators:
conditionField3InputData = formInput(conditionField3) conditionField3InputData = formInput(conditionField3)
if conditionField1InputData.len > 0 and conditionField1InputData == conditionField2 and conditionField3InputData.len == 0: if conditionField1InputData.len > 0 and conditionField1InputData == conditionField2 and conditionField3InputData.len == 0:
if inputData.len == 0: if inputData.len == 0:
msgString = inputName & " is required when " & conditionField1 & " equals " & conditionField2 & " and " & conditionField3 & " is not set." msgString = "The '" & inputName & "' field is required when " & conditionField1 & " equals " & conditionField2 & " and " & conditionField3 & " is not set."
addFormError(inputName, msgString) addFormError(inputName, msgString)
proc vStandard(inputName: string, inputData: string, inputType: string, validators: seq[string]) = proc vStandard(inputName: string, inputData: string, inputType: string, validators: seq[string]) =
if "email" in validators: if "email" in validators:
if not isEmail(inputData): if not isEmail(inputData):
msgString = inputName & " is not recognized as a valid email address." msgString = "The '" & inputName & "' field is not recognized as a valid email address."
addFormError(inputName, msgString) addFormError(inputName, msgString)
if "min_complexity" in validators: if "min_complexity" in validators:
if not isStrongPassword(inputData): if not isStrongPassword(inputData):
msgString = inputName & " is not random/complex enough. Try to make your " & inputName & " more unpredictable by adding random numbers, random letter casing, unrelated words, special characters, etc." msgString = "The '" & inputName & "' field is not random/complex enough. Try to make your " & inputName & " more unpredictable by adding random numbers, random letter casing, unrelated words, special characters, etc."
addFormError(inputName, msgString) addFormError(inputName, msgString)
proc vHardcoded*(inputDataAll: Table[string, string], validators: seq[string]) = proc vHardcoded*(inputDataAll: Table[string, string], validators: seq[string]) =
@ -194,7 +194,7 @@ proc vHardcoded*(inputDataAll: Table[string, string], validators: seq[string]) =
else: else:
inputDT = now() inputDT = now()
if inputDT <= nowDT: if inputDT <= nowDT:
msgString = "send_date and send_time combined must be a DateTime in the future (compared to the DateTime at form submit)." msgString = "The 'send_date' and 'send_time' fields combined must be a DateTime in the future (compared to the DateTime at form submit)."
addFormError("send_date", msgString) addFormError("send_date", msgString)
proc vInput*(inputName: string, validators: seq[string]) = proc vInput*(inputName: string, validators: seq[string]) =
@ -206,7 +206,7 @@ proc vInput*(inputName: string, validators: seq[string]) =
#check if 'required' is set and validate input if it exists. otherwise return error. #check if 'required' is set and validate input if it exists. otherwise return error.
if "required" in validators: if "required" in validators:
if (inputData.len == 0): if (inputData.len == 0):
msgString = inputName & " is required." msgString = "The '" & inputName & "' field is required."
addFormError(inputName, msgString) addFormError(inputName, msgString)
else: else:
#proceed with validation. #proceed with validation.