Rework email_activation model, get rid of behaviors, use json column to store additional data

This commit is contained in:
ErickSkrauch
2019-12-21 01:23:58 +03:00
parent 22e8158581
commit 666213afc7
26 changed files with 254 additions and 454 deletions

View File

@@ -5,7 +5,7 @@ namespace common\models\confirmations;
use common\models\EmailActivation;
use common\models\EmailActivationQuery;
use yii\helpers\ArrayHelper;
use DateInterval;
class CurrentEmailConfirmation extends EmailActivation {
@@ -13,18 +13,17 @@ class CurrentEmailConfirmation extends EmailActivation {
return parent::find()->withType(EmailActivation::TYPE_CURRENT_EMAIL_CONFIRMATION);
}
public function behaviors(): array {
return ArrayHelper::merge(parent::behaviors(), [
'expirationBehavior' => [
'repeatTimeout' => 6 * 60 * 60, // 6h
'expirationTimeout' => 1 * 60 * 60, // 1h
],
]);
}
public function init(): void {
parent::init();
$this->type = EmailActivation::TYPE_CURRENT_EMAIL_CONFIRMATION;
}
protected function getResendTimeout(): ?DateInterval {
return new DateInterval('PT6H');
}
protected function getExpireDuration(): ?DateInterval {
return new DateInterval('PT1H');
}
}

View File

@@ -5,7 +5,7 @@ namespace common\models\confirmations;
use common\models\EmailActivation;
use common\models\EmailActivationQuery;
use yii\helpers\ArrayHelper;
use DateInterval;
class ForgotPassword extends EmailActivation {
@@ -13,18 +13,17 @@ class ForgotPassword extends EmailActivation {
return parent::find()->withType(EmailActivation::TYPE_FORGOT_PASSWORD_KEY);
}
public function behaviors(): array {
return ArrayHelper::merge(parent::behaviors(), [
'expirationBehavior' => [
'repeatTimeout' => 30 * 60,
'expirationTimeout' => 1 * 60 * 60,
],
]);
}
public function init(): void {
parent::init();
$this->type = EmailActivation::TYPE_FORGOT_PASSWORD_KEY;
}
protected function getResendTimeout(): ?DateInterval {
return new DateInterval('PT30M');
}
protected function getExpireDuration(): ?DateInterval {
return new DateInterval('PT1H');
}
}

View File

@@ -7,30 +7,25 @@ use common\models\EmailActivation;
use common\models\EmailActivationQuery;
use yii\helpers\ArrayHelper;
/**
* Behaviors:
* @mixin NewEmailConfirmationBehavior
*/
class NewEmailConfirmation extends EmailActivation {
public static function find(): EmailActivationQuery {
return parent::find()->withType(EmailActivation::TYPE_NEW_EMAIL_CONFIRMATION);
}
public function behaviors(): array {
return ArrayHelper::merge(parent::behaviors(), [
'expirationBehavior' => [
'repeatTimeout' => 5 * 60,
],
'dataBehavior' => [
'class' => NewEmailConfirmationBehavior::class,
],
]);
}
public function init(): void {
parent::init();
$this->type = EmailActivation::TYPE_NEW_EMAIL_CONFIRMATION;
}
public function getNewEmail(): string {
return $this->data['newEmail'];
}
public function setNewEmail(string $newEmail): void {
$this->data = ArrayHelper::merge($this->data ?? [], [
'newEmail' => $newEmail,
]);
}
}

View File

@@ -1,21 +0,0 @@
<?php
declare(strict_types=1);
namespace common\models\confirmations;
use common\behaviors\DataBehavior;
/**
* @property string $newEmail
*/
class NewEmailConfirmationBehavior extends DataBehavior {
public function getNewEmail(): string {
return $this->getKey('newEmail');
}
public function setNewEmail(string $newEmail): void {
$this->setKey('newEmail', $newEmail);
}
}