UNPKG

ncc-prototype-email-alerts-sub

Version:

Northumberland Council Front End Email Alerts Subscription Prototype

39 lines (31 loc) 1.44 kB
import { Request } from "express"; import { ValidationRule } from "../../types/controller"; import {FormError, fieldError} from "../../types/custom" import logger from "../../libs/logger"; // eslint-disable-next-line @typescript-eslint/no-explicit-any const validate = (req: Request, validators: ValidationRule<any>[]): boolean => { if (validators.length === 0) return true; const bodyValues = Object.entries(req.body); req.session.formErrors = [] as FormError[]; req.session.error = {} as fieldError const errorObject = req.session?.error as fieldError; const validationResult = validators.map((item) => { const {fieldNames, validate, message} = item; return fieldNames.map((fieldName) => { return bodyValues.map((bodyValue) => { if (fieldName === bodyValue[0]) { const isValid = validate(bodyValue[1]) if(!isValid){ logger.debug(`${fieldName} ${bodyValue[1]} is not valid`) req.session.formErrors?.push({errorMessage: message, field: fieldName} as FormError) errorObject[fieldName] = { text : `${message}`} } return isValid } return true; }).flat(); }).flat(); }); return !validationResult.flat().some((i) => i == false); } export default validate;