MCPcopy Index your code
hub / github.com/parse-community/parse-server / validatePasswordPolicy

Method validatePasswordPolicy

src/Config.js:421–487  ·  view source on GitHub ↗
(passwordPolicy)

Source from the content-addressed store, hash-verified

419 }
420
421 static validatePasswordPolicy(passwordPolicy) {
422 if (passwordPolicy) {
423 if (
424 passwordPolicy.maxPasswordAge !== undefined &&
425 (typeof passwordPolicy.maxPasswordAge !== 'number' || passwordPolicy.maxPasswordAge < 0)
426 ) {
427 throw 'passwordPolicy.maxPasswordAge must be a positive number';
428 }
429
430 if (
431 passwordPolicy.resetTokenValidityDuration !== undefined &&
432 (typeof passwordPolicy.resetTokenValidityDuration !== 'number' ||
433 passwordPolicy.resetTokenValidityDuration <= 0)
434 ) {
435 throw 'passwordPolicy.resetTokenValidityDuration must be a positive number';
436 }
437
438 if (passwordPolicy.validatorPattern) {
439 if (typeof passwordPolicy.validatorPattern === 'string') {
440 passwordPolicy.validatorPattern = new RegExp(passwordPolicy.validatorPattern);
441 } else if (!Utils.isRegExp(passwordPolicy.validatorPattern)) {
442 throw 'passwordPolicy.validatorPattern must be a regex string or RegExp object.';
443 }
444 }
445
446 if (
447 passwordPolicy.validatorCallback &&
448 typeof passwordPolicy.validatorCallback !== 'function'
449 ) {
450 throw 'passwordPolicy.validatorCallback must be a function.';
451 }
452
453 if (
454 passwordPolicy.doNotAllowUsername &&
455 typeof passwordPolicy.doNotAllowUsername !== 'boolean'
456 ) {
457 throw 'passwordPolicy.doNotAllowUsername must be a boolean value.';
458 }
459
460 if (
461 passwordPolicy.maxPasswordHistory &&
462 (!Number.isInteger(passwordPolicy.maxPasswordHistory) ||
463 passwordPolicy.maxPasswordHistory <= 0 ||
464 passwordPolicy.maxPasswordHistory > 20)
465 ) {
466 throw 'passwordPolicy.maxPasswordHistory must be an integer ranging 0 - 20';
467 }
468
469 if (
470 passwordPolicy.resetTokenReuseIfValid &&
471 typeof passwordPolicy.resetTokenReuseIfValid !== 'boolean'
472 ) {
473 throw 'resetTokenReuseIfValid must be a boolean value';
474 }
475 if (passwordPolicy.resetTokenReuseIfValid && !passwordPolicy.resetTokenValidityDuration) {
476 throw 'You cannot use resetTokenReuseIfValid without resetTokenValidityDuration';
477 }
478

Callers 1

validateOptionsMethod · 0.95

Calls 1

isRegExpMethod · 0.80

Tested by

no test coverage detected