Упразднён контроллер PasswordProtectedController и заменён на валидатор PasswordRequiredValidator

Реорганизованы тесты для ChangeUsernameFormTest
This commit is contained in:
ErickSkrauch
2016-07-25 14:07:14 +03:00
parent a4dad11be5
commit 31679b84cb
9 changed files with 121 additions and 105 deletions

View File

@@ -1,31 +0,0 @@
<?php
namespace api\models\base;
use common\helpers\Error as E;
use Yii;
class PasswordProtectedForm extends ApiForm {
public $password;
public function rules() {
return [
[['password'], 'required', 'message' => E::PASSWORD_REQUIRED],
[['password'], 'validatePassword'],
];
}
public function validatePassword() {
if (!$this->getAccount()->validatePassword($this->password)) {
$this->addError('password', E::PASSWORD_INVALID);
}
}
/**
* @return \common\models\Account
*/
protected function getAccount() {
return Yii::$app->user->identity;
}
}

View File

@@ -1,7 +1,8 @@
<?php
namespace api\models\profile\ChangeEmail;
use api\models\base\PasswordProtectedForm;
use api\models\base\ApiForm;
use api\validators\PasswordRequiredValidator;
use common\helpers\Error as E;
use common\models\Account;
use common\models\confirmations\CurrentEmailConfirmation;
@@ -11,10 +12,12 @@ use yii\base\ErrorException;
use yii\base\Exception;
use yii\base\InvalidConfigException;
class InitStateForm extends PasswordProtectedForm {
class InitStateForm extends ApiForm {
public $email;
public $password;
private $account;
public function __construct(Account $account, array $config = []) {
@@ -28,9 +31,10 @@ class InitStateForm extends PasswordProtectedForm {
}
public function rules() {
return array_merge(parent::rules(), [
return [
['email', 'validateFrequency'],
]);
['password', PasswordRequiredValidator::class, 'account' => $this->account],
];
}
public function validateFrequency($attribute) {
@@ -90,7 +94,6 @@ class InitStateForm extends PasswordProtectedForm {
}
public function sendCode(EmailActivation $code) {
/** @var \yii\swiftmailer\Mailer $mailer */
$mailer = Yii::$app->mailer;
$fromEmail = Yii::$app->params['fromEmail'];
if (!$fromEmail) {
@@ -98,7 +101,6 @@ class InitStateForm extends PasswordProtectedForm {
}
$acceptor = $code->account;
/** @var \yii\swiftmailer\Message $message */
$message = $mailer->compose([
'html' => '@app/mails/current-email-confirmation-html',
'text' => '@app/mails/current-email-confirmation-text',

View File

@@ -1,7 +1,8 @@
<?php
namespace api\models\profile;
use api\models\base\PasswordProtectedForm;
use api\models\base\ApiForm;
use api\validators\PasswordRequiredValidator;
use common\helpers\Error as E;
use common\models\Account;
use common\validators\PasswordValidate;
@@ -9,7 +10,7 @@ use Yii;
use yii\base\ErrorException;
use yii\helpers\ArrayHelper;
class ChangePasswordForm extends PasswordProtectedForm {
class ChangePasswordForm extends ApiForm {
public $newPassword;
@@ -17,6 +18,8 @@ class ChangePasswordForm extends PasswordProtectedForm {
public $logoutAll;
public $password;
/**
* @var \common\models\Account
*/
@@ -37,6 +40,7 @@ class ChangePasswordForm extends PasswordProtectedForm {
['newPassword', PasswordValidate::class],
['newRePassword', 'validatePasswordAndRePasswordMatch'],
['logoutAll', 'boolean'],
['password', PasswordRequiredValidator::class, 'account' => $this->_account],
]);
}
@@ -49,7 +53,8 @@ class ChangePasswordForm extends PasswordProtectedForm {
}
/**
* @return boolean
* @return bool
* @throws ErrorException
*/
public function changePassword() : bool {
if (!$this->validate()) {

View File

@@ -1,7 +1,9 @@
<?php
namespace api\models\profile;
use api\models\base\PasswordProtectedForm;
use api\models\AccountIdentity;
use api\models\base\ApiForm;
use api\validators\PasswordRequiredValidator;
use common\helpers\Error;
use common\helpers\Amqp;
use common\models\amqp\UsernameChanged;
@@ -10,17 +12,19 @@ use Exception;
use PhpAmqpLib\Message\AMQPMessage;
use Yii;
use yii\base\ErrorException;
use yii\helpers\ArrayHelper;
class ChangeUsernameForm extends PasswordProtectedForm {
class ChangeUsernameForm extends ApiForm {
public $username;
public $password;
public function rules() {
return ArrayHelper::merge(parent::rules(), [
return [
['username', 'required', 'message' => Error::USERNAME_REQUIRED],
['username', 'validateUsername'],
]);
['password', PasswordRequiredValidator::class],
];
}
public function validateUsername($attribute) {
@@ -84,4 +88,8 @@ class ChangeUsernameForm extends PasswordProtectedForm {
Amqp::sendToEventsExchange('accounts.username-changed', $message);
}
protected function getAccount() : AccountIdentity {
return Yii::$app->user->identity;
}
}