53 lines
1.2 KiB
PHP
53 lines
1.2 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace frontend\models;
|
||
|
|
||
|
use common\models\User;
|
||
|
use yii\base\InvalidArgumentException;
|
||
|
use yii\base\Model;
|
||
|
|
||
|
class VerifyEmailForm extends Model
|
||
|
{
|
||
|
/**
|
||
|
* @var string
|
||
|
*/
|
||
|
public $token;
|
||
|
|
||
|
/**
|
||
|
* @var User
|
||
|
*/
|
||
|
private $_user;
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Creates a form model with given token.
|
||
|
*
|
||
|
* @param string $token
|
||
|
* @param array $config name-value pairs that will be used to initialize the object properties
|
||
|
* @throws InvalidArgumentException if token is empty or not valid
|
||
|
*/
|
||
|
public function __construct($token, array $config = [])
|
||
|
{
|
||
|
if (empty($token) || !is_string($token)) {
|
||
|
throw new InvalidArgumentException('Verify email token cannot be blank.');
|
||
|
}
|
||
|
$this->_user = User::findByVerificationToken($token);
|
||
|
if (!$this->_user) {
|
||
|
throw new InvalidArgumentException('Wrong verify email token.');
|
||
|
}
|
||
|
parent::__construct($config);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Verify email
|
||
|
*
|
||
|
* @return User|null the saved model or null if saving fails
|
||
|
*/
|
||
|
public function verifyEmail()
|
||
|
{
|
||
|
$user = $this->_user;
|
||
|
$user->status = User::STATUS_ACTIVE;
|
||
|
return $user->save(false) ? $user : null;
|
||
|
}
|
||
|
}
|