Skip to content

Commit d4c9b85

Browse files
committed
fix: export applyRegexValidation from adminforth
AdminForth/1731/security-audit
1 parent 5f07632 commit d4c9b85

2 files changed

Lines changed: 32 additions & 28 deletions

File tree

adminforth/index.ts

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import CodeInjector from './modules/codeInjector.js';
33
import ExpressServer from './servers/express.js';
44
import OpenApiRegistry from './servers/openapi.js';
55
// import FastifyServer from './servers/fastify.js';
6-
import { ADMINFORTH_VERSION, listify, suggestIfTypo, RateLimiter, RAMLock, getClientIp, isProbablyUUIDColumn, convertPeriodToSeconds, hookResponseError, md5hash } from './modules/utils.js';
6+
import { ADMINFORTH_VERSION, listify, suggestIfTypo, RateLimiter, RAMLock, getClientIp, isProbablyUUIDColumn, convertPeriodToSeconds, hookResponseError, md5hash, applyRegexValidation } from './modules/utils.js';
77
import {
88
type AdminForthConfig,
99
type IAdminForth,
@@ -69,33 +69,7 @@ class AdminForth implements IAdminForth {
6969
},
7070

7171
applyRegexValidation(value, validation) {
72-
if (validation?.length) {
73-
const validationArray = validation;
74-
for (let i = 0; i < validationArray.length; i++) {
75-
if (validationArray[i].regExp) {
76-
let flags = '';
77-
if (validationArray[i].caseSensitive) {
78-
flags += 'i';
79-
}
80-
if (validationArray[i].multiline) {
81-
flags += 'm';
82-
}
83-
if (validationArray[i].global) {
84-
flags += 'g';
85-
}
86-
87-
const regExp = new RegExp(validationArray[i].regExp, flags);
88-
if (value === undefined || value === null) {
89-
value = '';
90-
}
91-
let valueS = `${value}`;
92-
93-
if (!regExp.test(valueS)) {
94-
return validationArray[i].message;
95-
}
96-
}
97-
}
98-
}
72+
return applyRegexValidation(value, validation);
9973
},
10074

10175
PASSWORD_VALIDATORS: {

adminforth/modules/utils.ts

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -592,4 +592,34 @@ export function checkIfFieldIsInsideResourceColumns(fieldName: string, resource:
592592
}
593593
}
594594
return false;
595+
}
596+
597+
export function applyRegexValidation(value, validation) {
598+
if (validation?.length) {
599+
const validationArray = validation;
600+
for (let i = 0; i < validationArray.length; i++) {
601+
if (validationArray[i].regExp) {
602+
let flags = '';
603+
if (validationArray[i].caseSensitive) {
604+
flags += 'i';
605+
}
606+
if (validationArray[i].multiline) {
607+
flags += 'm';
608+
}
609+
if (validationArray[i].global) {
610+
flags += 'g';
611+
}
612+
613+
const regExp = new RegExp(validationArray[i].regExp, flags);
614+
if (value === undefined || value === null) {
615+
value = '';
616+
}
617+
let valueS = `${value}`;
618+
619+
if (!regExp.test(valueS)) {
620+
return validationArray[i].message;
621+
}
622+
}
623+
}
624+
}
595625
}

0 commit comments

Comments
 (0)