(passwordPolicy)
| 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 |
no test coverage detected