<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\User\Model; use Magento\Framework\Validator\EmailAddress; use Magento\Framework\Validator\NotEmpty; use Magento\Framework\Validator\Regex; use Magento\Framework\Validator\StringLength; /** * Class for adding validation rules to an Admin user * * @api * @since 100.0.2 */ class UserValidationRules { /** * Minimum length of admin password */ const MIN_PASSWORD_LENGTH = 7; /** * Adds validation rule for user first name, last name, username and email * * @param \Magento\Framework\Validator\DataObject $validator * @return \Magento\Framework\Validator\DataObject */ public function addUserInfoRules(\Magento\Framework\Validator\DataObject $validator) { $userNameNotEmpty = new NotEmpty(); $userNameNotEmpty->setMessage( __('"User Name" is required. Enter and try again.'), \Zend_Validate_NotEmpty::IS_EMPTY ); $firstNameNotEmpty = new NotEmpty(); $firstNameNotEmpty->setMessage( __('"First Name" is required. Enter and try again.'), \Zend_Validate_NotEmpty::IS_EMPTY ); $lastNameNotEmpty = new NotEmpty(); $lastNameNotEmpty->setMessage( __('"Last Name" is required. Enter and try again.'), \Zend_Validate_NotEmpty::IS_EMPTY ); $emailValidity = new EmailAddress(); $emailValidity->setMessage( __('Please enter a valid email.'), \Zend_Validate_EmailAddress::INVALID ); /** @var $validator \Magento\Framework\Validator\DataObject */ $validator->addRule( $userNameNotEmpty, 'username' )->addRule( $firstNameNotEmpty, 'firstname' )->addRule( $lastNameNotEmpty, 'lastname' )->addRule( $emailValidity, 'email' ); return $validator; } /** * Adds validation rule for user password * * @param \Magento\Framework\Validator\DataObject $validator * @return \Magento\Framework\Validator\DataObject */ public function addPasswordRules(\Magento\Framework\Validator\DataObject $validator) { $passwordNotEmpty = new NotEmpty(); $passwordNotEmpty->setMessage(__('Password is required field.'), NotEmpty::IS_EMPTY); $minPassLength = self::MIN_PASSWORD_LENGTH; $passwordLength = new StringLength(['min' => $minPassLength, 'encoding' => 'UTF-8']); $passwordLength->setMessage( __('Your password must be at least %1 characters.', $minPassLength), \Zend_Validate_StringLength::TOO_SHORT ); $passwordChars = new Regex('/[a-z].*\d|\d.*[a-z]/iu'); $passwordChars->setMessage( __('Your password must include both numeric and alphabetic characters.'), \Zend_Validate_Regex::NOT_MATCH ); $validator->addRule( $passwordNotEmpty, 'password' )->addRule( $passwordLength, 'password' )->addRule( $passwordChars, 'password' ); return $validator; } /** * Adds validation rule for user password confirmation * * @param \Magento\Framework\Validator\DataObject $validator * @param string $passwordConfirmation * @return \Magento\Framework\Validator\DataObject */ public function addPasswordConfirmationRule( \Magento\Framework\Validator\DataObject $validator, $passwordConfirmation ) { $passwordConfirmation = new \Zend_Validate_Identical($passwordConfirmation); $passwordConfirmation->setMessage( __('Your password confirmation must match your password.'), \Zend_Validate_Identical::NOT_SAME ); $validator->addRule($passwordConfirmation, 'password'); return $validator; } }