UserValidationRules.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\User\Model;
  7. use Magento\Framework\Validator\EmailAddress;
  8. use Magento\Framework\Validator\NotEmpty;
  9. use Magento\Framework\Validator\Regex;
  10. use Magento\Framework\Validator\StringLength;
  11. /**
  12. * Class for adding validation rules to an Admin user
  13. *
  14. * @api
  15. * @since 100.0.2
  16. */
  17. class UserValidationRules
  18. {
  19. /**
  20. * Minimum length of admin password
  21. */
  22. const MIN_PASSWORD_LENGTH = 7;
  23. /**
  24. * Adds validation rule for user first name, last name, username and email
  25. *
  26. * @param \Magento\Framework\Validator\DataObject $validator
  27. * @return \Magento\Framework\Validator\DataObject
  28. */
  29. public function addUserInfoRules(\Magento\Framework\Validator\DataObject $validator)
  30. {
  31. $userNameNotEmpty = new NotEmpty();
  32. $userNameNotEmpty->setMessage(
  33. __('"User Name" is required. Enter and try again.'),
  34. \Zend_Validate_NotEmpty::IS_EMPTY
  35. );
  36. $firstNameNotEmpty = new NotEmpty();
  37. $firstNameNotEmpty->setMessage(
  38. __('"First Name" is required. Enter and try again.'),
  39. \Zend_Validate_NotEmpty::IS_EMPTY
  40. );
  41. $lastNameNotEmpty = new NotEmpty();
  42. $lastNameNotEmpty->setMessage(
  43. __('"Last Name" is required. Enter and try again.'),
  44. \Zend_Validate_NotEmpty::IS_EMPTY
  45. );
  46. $emailValidity = new EmailAddress();
  47. $emailValidity->setMessage(
  48. __('Please enter a valid email.'),
  49. \Zend_Validate_EmailAddress::INVALID
  50. );
  51. /** @var $validator \Magento\Framework\Validator\DataObject */
  52. $validator->addRule(
  53. $userNameNotEmpty,
  54. 'username'
  55. )->addRule(
  56. $firstNameNotEmpty,
  57. 'firstname'
  58. )->addRule(
  59. $lastNameNotEmpty,
  60. 'lastname'
  61. )->addRule(
  62. $emailValidity,
  63. 'email'
  64. );
  65. return $validator;
  66. }
  67. /**
  68. * Adds validation rule for user password
  69. *
  70. * @param \Magento\Framework\Validator\DataObject $validator
  71. * @return \Magento\Framework\Validator\DataObject
  72. */
  73. public function addPasswordRules(\Magento\Framework\Validator\DataObject $validator)
  74. {
  75. $passwordNotEmpty = new NotEmpty();
  76. $passwordNotEmpty->setMessage(__('Password is required field.'), NotEmpty::IS_EMPTY);
  77. $minPassLength = self::MIN_PASSWORD_LENGTH;
  78. $passwordLength = new StringLength(['min' => $minPassLength, 'encoding' => 'UTF-8']);
  79. $passwordLength->setMessage(
  80. __('Your password must be at least %1 characters.', $minPassLength),
  81. \Zend_Validate_StringLength::TOO_SHORT
  82. );
  83. $passwordChars = new Regex('/[a-z].*\d|\d.*[a-z]/iu');
  84. $passwordChars->setMessage(
  85. __('Your password must include both numeric and alphabetic characters.'),
  86. \Zend_Validate_Regex::NOT_MATCH
  87. );
  88. $validator->addRule(
  89. $passwordNotEmpty,
  90. 'password'
  91. )->addRule(
  92. $passwordLength,
  93. 'password'
  94. )->addRule(
  95. $passwordChars,
  96. 'password'
  97. );
  98. return $validator;
  99. }
  100. /**
  101. * Adds validation rule for user password confirmation
  102. *
  103. * @param \Magento\Framework\Validator\DataObject $validator
  104. * @param string $passwordConfirmation
  105. * @return \Magento\Framework\Validator\DataObject
  106. */
  107. public function addPasswordConfirmationRule(
  108. \Magento\Framework\Validator\DataObject $validator,
  109. $passwordConfirmation
  110. ) {
  111. $passwordConfirmation = new \Zend_Validate_Identical($passwordConfirmation);
  112. $passwordConfirmation->setMessage(
  113. __('Your password confirmation must match your password.'),
  114. \Zend_Validate_Identical::NOT_SAME
  115. );
  116. $validator->addRule($passwordConfirmation, 'password');
  117. return $validator;
  118. }
  119. }