Образован валидатор UsernameValidator

This commit is contained in:
ErickSkrauch
2016-11-01 23:27:38 +03:00
parent 34131ab44a
commit 94a8e21f27
7 changed files with 171 additions and 105 deletions

View File

@@ -11,6 +11,7 @@ use common\models\EmailActivation;
use common\models\UsernameHistory;
use common\validators\LanguageValidator;
use common\validators\PasswordValidate;
use common\validators\UsernameValidator;
use Exception;
use Ramsey\Uuid\Uuid;
use Yii;
@@ -40,7 +41,7 @@ class RegistrationForm extends ApiForm {
['captcha', ReCaptchaValidator::class],
['rulesAgreement', 'required', 'message' => E::RULES_AGREEMENT_REQUIRED],
['username', 'validateUsername', 'skipOnEmpty' => false],
['username', UsernameValidator::class],
['email', 'validateEmail', 'skipOnEmpty' => false],
['password', 'required', 'message' => E::PASSWORD_REQUIRED],
@@ -53,14 +54,6 @@ class RegistrationForm extends ApiForm {
];
}
public function validateUsername() {
$account = new Account();
$account->username = $this->username;
if (!$account->validate(['username'])) {
$this->addErrors($account->getErrors());
}
}
public function validateEmail() {
$account = new Account();
$account->email = $this->email;

View File

@@ -4,11 +4,10 @@ namespace api\models\profile;
use api\models\AccountIdentity;
use api\models\base\ApiForm;
use api\validators\PasswordRequiredValidator;
use common\helpers\Error;
use common\helpers\Amqp;
use common\models\Account;
use common\models\amqp\UsernameChanged;
use common\models\UsernameHistory;
use common\validators\UsernameValidator;
use Exception;
use PhpAmqpLib\Message\AMQPMessage;
use Yii;
@@ -22,23 +21,13 @@ class ChangeUsernameForm extends ApiForm {
public function rules() {
return [
['username', 'required', 'message' => Error::USERNAME_REQUIRED],
['username', 'validateUsername'],
['username', UsernameValidator::class, 'accountCallback' => function() {
return $this->getAccount()->id;
}],
['password', PasswordRequiredValidator::class],
];
}
public function validateUsername($attribute) {
$account = new Account();
$account->id = $this->getAccount()->id;
$account->username = $this->$attribute;
// Это чтобы unique validator учёл, что ник может быть забит на текущий аккаунт
$account->setIsNewRecord(false);
if (!$account->validate(['username'])) {
$this->addErrors($account->getErrors());
}
}
public function change() {
if (!$this->validate()) {
return false;