From 4c31c266284fe4472048c84b750fc36c93321d2f Mon Sep 17 00:00:00 2001 From: SilverFire - Dmitry Naumenko Date: Mon, 1 Feb 2016 23:49:14 +0200 Subject: [PATCH] EmailValidator - the name of the mailbox is no longer limited with the length --- framework/assets/yii.validation.js | 2 +- framework/validators/EmailValidator.php | 2 +- tests/framework/validators/EmailValidatorTest.php | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/framework/assets/yii.validation.js b/framework/assets/yii.validation.js index fa9f78956e..562435fc1a 100644 --- a/framework/assets/yii.validation.js +++ b/framework/assets/yii.validation.js @@ -206,7 +206,7 @@ yii.validation = (function ($) { value = matches[1] + matches[3] + matches[5] + '@' + matches[6] + matches[7]; } - if (matches[5].length > 64 || matches[1].length > 64) { + if (matches[5].length > 64) { valid = false; } else if ((matches[5] + '@' + matches[6]).length > 254) { valid = false; diff --git a/framework/validators/EmailValidator.php b/framework/validators/EmailValidator.php index 26e67665f0..42c96b0e16 100644 --- a/framework/validators/EmailValidator.php +++ b/framework/validators/EmailValidator.php @@ -81,7 +81,7 @@ class EmailValidator extends Validator $value = $matches['name'] . $matches['open'] . $matches['local'] . '@' . $matches['domain'] . $matches['close']; } - if (strlen($matches['local']) > 64 || mb_strlen($matches['name'], Yii::$app->charset) > 64) { + if (strlen($matches['local']) > 64) { // The maximum total length of a user name or other local-part is 64 octets. RFC 5322 section 4.5.3.1.1 // http://tools.ietf.org/html/rfc5321#section-4.5.3.1.1 $valid = false; diff --git a/tests/framework/validators/EmailValidatorTest.php b/tests/framework/validators/EmailValidatorTest.php index aaadb65671..08b4b3524c 100644 --- a/tests/framework/validators/EmailValidatorTest.php +++ b/tests/framework/validators/EmailValidatorTest.php @@ -45,10 +45,10 @@ class EmailValidatorTest extends TestCase $this->assertFalse($validator->validate('Informtation info@oertliches.de')); $this->assertTrue($validator->validate('test@example.com')); $this->assertTrue($validator->validate('John Smith ')); + $this->assertTrue($validator->validate('"This name is longer than 64 characters. Blah blah blah blah blah" ')); $this->assertFalse($validator->validate('John Smith ')); $this->assertFalse($validator->validate('Short Name ')); $this->assertFalse($validator->validate('Short Name ')); - $this->assertFalse($validator->validate('"This name is longer than 64 characters. Blah blah blah blah blah" ')); } public function testValidateValueIdn() @@ -87,10 +87,10 @@ class EmailValidatorTest extends TestCase $this->assertTrue($validator->validate('')); $this->assertTrue($validator->validate('test@example.com')); $this->assertTrue($validator->validate('John Smith ')); + $this->assertTrue($validator->validate('"Такое имя достаточно длинное, но оно все равно можнет пройти валидацию" ')); $this->assertFalse($validator->validate('John Smith ')); $this->assertFalse($validator->validate('Короткое имя <после-преобразования-в-idn-тут-будет-больше-чем-64-символа@пример.com>')); $this->assertFalse($validator->validate('Короткое имя <тест@это-доменное-имя.после-преобразования-в-idn.будет-содержать-больше-254-символов.бла-бла-бла-бла-бла-бла-бла-бла.бла-бла-бла-бла-бла-бла.бла-бла-бла-бла-бла-бла.бла-бла-бла-бла-бла-бла.com>')); - $this->assertFalse($validator->validate('"Такое имя достаточно длинное, чтобы не допустить валидацию имейла" ')); } public function testValidateValueMx()