Добавлены экшены в контроллер и 1 тест (больше не успел)

This commit is contained in:
ErickSkrauch
2016-05-16 11:21:12 +03:00
parent 50439fdaeb
commit f99b281f30
6 changed files with 138 additions and 11 deletions

View File

@@ -1,3 +1,6 @@
<?php
return [
'/accounts/change-email/initialize' => 'accounts/change-email-initialize',
'/accounts/change-email/submit-new-email' => 'accounts/change-email-submit-new-email',
'/accounts/change-email/confirm-new-email' => 'accounts/change-email-confirm-new-email',
];

View File

@@ -1,6 +1,9 @@
<?php
namespace api\controllers;
use api\models\profile\ChangeEmail\ConfirmNewEmailForm;
use api\models\profile\ChangeEmail\InitStateForm;
use api\models\profile\ChangeEmail\NewEmailForm;
use api\models\profile\ChangePasswordForm;
use api\models\profile\ChangeUsernameForm;
use common\models\Account;
@@ -21,7 +24,13 @@ class AccountsController extends Controller {
'roles' => ['@'],
],
[
'actions' => ['change-password', 'change-username'],
'actions' => [
'change-password',
'change-username',
'change-email-initialize',
'change-email-submit-new-email',
'change-email-confirm-new-email',
],
'allow' => true,
'roles' => ['@'],
'matchCallback' => function() {
@@ -40,6 +49,9 @@ class AccountsController extends Controller {
'current' => ['GET'],
'change-password' => ['POST'],
'change-username' => ['POST'],
'change-email-initialize' => ['POST'],
'change-email-submit-new-email' => ['POST'],
'change-email-confirm-new-email' => ['POST'],
];
}
@@ -92,4 +104,57 @@ class AccountsController extends Controller {
];
}
public function actionChangeEmailInitialize() {
/** @var Account $account */
$account = Yii::$app->user->identity;
$model = new InitStateForm($account);
if (!$model->sendCurrentEmailConfirmation()) {
return [
'success' => false,
'errors' => $this->normalizeModelErrors($model->getErrors()),
];
}
return [
'success' => true,
];
}
public function actionChangeEmailSubmitNewEmail() {
/** @var Account $account */
$account = Yii::$app->user->identity;
$model = new NewEmailForm($account);
$model->load(Yii::$app->request->post());
if (!$model->sendNewEmailConfirmation()) {
return [
'success' => false,
'errors' => $this->normalizeModelErrors($model->getErrors()),
];
}
return [
'success' => true,
];
}
public function actionChangeEmailConfirmNewEmail() {
/** @var Account $account */
$account = Yii::$app->user->identity;
$model = new ConfirmNewEmailForm($account);
$model->load(Yii::$app->request->post());
if (!$model->changeEmail()) {
return [
'success' => false,
'errors' => $this->normalizeModelErrors($model->getErrors()),
];
}
return [
'success' => true,
'data' => [
'email' => $account->email,
],
];
}
}

View File

@@ -28,7 +28,7 @@ class InitStateForm extends ApiForm {
public function rules() {
// TODO: поверить наличие уже отправленных подтверждений смены E-mail
return [
['!email', 'validateAccountPasswordHashStrategy'],
['!email', 'validateAccountPasswordHashStrategy', 'skipOnEmpty' => false],
];
}