xzwebx-httpfilter 1.2.5 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/HttpFilter.js +88 -26
  2. package/package.json +1 -1
package/HttpFilter.js CHANGED
@@ -125,44 +125,54 @@ function CheckReq(req, res, next) {
125
125
  }
126
126
  function cycleCheckParams(msgFieldMap, data) {
127
127
  let retMsgData = null
128
- if (!msgFieldMap ||
129
- !msgFieldMap['__FieldCfg'] ||
130
- !msgFieldMap['__FieldCfg'].ifMust) {
128
+
129
+ if (!msgFieldMap) {
131
130
  return null
132
131
  }
133
132
 
133
+ let fCfgItem = null
134
+ let isRoot = true
135
+ if (msgFieldMap['__FieldCfg']) {
136
+ isRoot = false
137
+ fCfgItem = msgFieldMap['__FieldCfg']
138
+ }
139
+
134
140
  for (let fieldName in msgFieldMap) {
135
- let fCfgItem = msgFieldMap[fieldName]
136
- if (fieldName == '__FieldCfg') {
137
- if (fCfgItem.ifMust == 'NO' && (data == undefined || data == null || data == '' || (typeof data === 'object' && !data.length && !Object.keys(data).length))) {
138
- return null
139
- }
141
+ if (isRoot) {
142
+ fCfgItem = msgFieldMap[fieldName]['__FieldCfg']
143
+ }
140
144
 
141
- let retMsgData = ''
142
- if (fCfgItem.fieldType == 'STR') {
143
- retMsgData = IsStringOk(fCfgItem, data)
144
- } else if (fCfgItem.fieldType == 'INT') {
145
- retMsgData = IsIntOk(fCfgItem, data)
146
- } else if (fCfgItem.fieldType == 'OBJ') {
147
- retMsgData = IsObjOk(fCfgItem, data)
148
- } else if (fCfgItem.fieldType == 'LIST') {
149
- retMsgData = IsListOk(fCfgItem, data)
150
- }
151
- if (retMsgData) {
152
- return retMsgData
153
- }
145
+ if (fCfgItem.fieldType == 'STR') {
146
+ retMsgData = IsStringOk(fCfgItem, data)
147
+ } else if (fCfgItem.fieldType == 'INT') {
148
+ retMsgData = IsIntOk(fCfgItem, data)
149
+ } else if (fCfgItem.fieldType == 'OBJ') {
150
+ retMsgData = IsObjOk(fCfgItem, data)
151
+ } else if (fCfgItem.fieldType == 'LIST') {
152
+ retMsgData = IsListOk(fCfgItem, data)
153
+ }
154
+
155
+ if (retMsgData) {
156
+ return retMsgData
157
+ }
158
+
159
+ if (fieldName == '__FieldCfg') {
154
160
  continue
155
161
  }
156
- let fatherFieldType = msgFieldMap['__FieldCfg'].fieldType
157
- if (fatherFieldType == 'LIST' || (fatherFieldType == 'OBJ' && msgFieldMap['__FieldCfg'].keyType == 'VOBJ')) {
162
+ let fatherFieldType = fCfgItem.fieldType
163
+ if (fatherFieldType == 'LIST' || (fatherFieldType == 'OBJ' && fCfgItem.keyType == 'VOBJ')) {
158
164
  for (let idx in data) {
159
- retMsgData = cycleCheckParams(fCfgItem, data[idx])
165
+ retMsgData = cycleCheckParams(msgFieldMap[fieldName], data[idx])
160
166
  if (retMsgData) {
161
167
  return retMsgData
162
168
  }
163
169
  }
164
170
  } else {
165
- retMsgData = cycleCheckParams(fCfgItem, data[fieldName])
171
+ if (isRoot) {
172
+ retMsgData = cycleCheckParams(msgFieldMap[fieldName], data)
173
+ } else {
174
+ retMsgData = cycleCheckParams(msgFieldMap[fieldName], data[fieldName])
175
+ }
166
176
  }
167
177
 
168
178
  if (retMsgData) {
@@ -172,6 +182,19 @@ function cycleCheckParams(msgFieldMap, data) {
172
182
  return null
173
183
  }
174
184
  function IsStringOk(fCfgItem, paramValue) {
185
+ if (!fCfgItem || !fCfgItem.ifMust) {
186
+ return null
187
+ }
188
+
189
+ if (fCfgItem.ifMust == 'NO' && (
190
+ data == undefined ||
191
+ data == null ||
192
+ data == '' ||
193
+ (typeof data === 'object' && !data.length && !Object.keys(data).length))
194
+ ) {
195
+ return null
196
+ }
197
+
175
198
  if (!paramValue) {
176
199
  return ['NULL_STR_FIELD', fCfgItem.fieldUrl]
177
200
  }
@@ -192,7 +215,7 @@ function IsStringOk(fCfgItem, paramValue) {
192
215
  }
193
216
  }
194
217
  } else {
195
- if (parseInt(rule.exprVal[0]) <= paramValue.length && parseInt(rule.exprVal[1]) >= paramValue.length) {
218
+ if (paramValue.length >= parseInt(rule.exprVal[0]) && paramValue.length <= parseInt(rule.exprVal[1])) {
196
219
  isPass = true
197
220
  }
198
221
  }
@@ -279,6 +302,19 @@ function IsStringOk(fCfgItem, paramValue) {
279
302
  return null
280
303
  }
281
304
  function IsIntOk(fCfgItem, paramValue) {
305
+ if (!fCfgItem || !fCfgItem.ifMust) {
306
+ return null
307
+ }
308
+
309
+ if (fCfgItem.ifMust == 'NO' && (
310
+ data == undefined ||
311
+ data == null ||
312
+ data == '' ||
313
+ (typeof data === 'object' && !data.length && !Object.keys(data).length))
314
+ ) {
315
+ return null
316
+ }
317
+
282
318
  if (paramValue == undefined) {
283
319
  return ['NULL_INT_FIELD', fCfgItem.fieldUrl]
284
320
  }
@@ -358,6 +394,19 @@ function IsIntOk(fCfgItem, paramValue) {
358
394
  return null
359
395
  }
360
396
  function IsObjOk(fCfgItem, paramValue) {
397
+ if (!fCfgItem || !fCfgItem.ifMust) {
398
+ return null
399
+ }
400
+
401
+ if (fCfgItem.ifMust == 'NO' && (
402
+ data == undefined ||
403
+ data == null ||
404
+ data == '' ||
405
+ (typeof data === 'object' && !data.length && !Object.keys(data).length))
406
+ ) {
407
+ return null
408
+ }
409
+
361
410
  if (!paramValue) {
362
411
  return ['NULL_FIELD', fCfgItem.fieldUrl]
363
412
  }
@@ -373,6 +422,19 @@ function IsObjOk(fCfgItem, paramValue) {
373
422
  return null
374
423
  }
375
424
  function IsListOk(fCfgItem, paramValue) {
425
+ if (!fCfgItem || !fCfgItem.ifMust) {
426
+ return null
427
+ }
428
+
429
+ if (fCfgItem.ifMust == 'NO' && (
430
+ data == undefined ||
431
+ data == null ||
432
+ data == '' ||
433
+ (typeof data === 'object' && !data.length && !Object.keys(data).length))
434
+ ) {
435
+ return null
436
+ }
437
+
376
438
  if (!paramValue) {
377
439
  return ['NULL_FIELD', fCfgItem.fieldUrl]
378
440
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xzwebx-httpfilter",
3
- "version": "1.2.5",
3
+ "version": "1.3.0",
4
4
  "main": "HttpFilter.js",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"