File: //home/aliazzsr/api.crm.vqode.com/models/AuthToken.php
<?php
namespace app\models;
use app\components\helpers\ValueHelper;
use app\models\core\User;
use yii\behaviors\TimestampBehavior;
use yii\db\ActiveRecord;
use yii\db\Expression;
use yii\helpers\ArrayHelper;
/**
* Class AuthToken
* @package app\models
* @property string $token
*/
class AuthToken extends ActiveRecord
{
/** @var integer token expiration, minutes */
protected $tokenExpiration;
const EXPIRES_DEFAULT = 60;
public function init()
{
parent::init();
$this->tokenExpiration = ArrayHelper::getValue(\Yii::$app->params, 'session.expires', self::EXPIRES_DEFAULT);
}
public static function tableName()
{
return 'auth_token';
}
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors[] = [
'class' => TimestampBehavior::className(),
'createdAtAttribute' => 'issued_at',
'updatedAtAttribute' => 'renewed_at',
'value' => ValueHelper::now(),
];
return $behaviors;
}
public function save($runValidation = true, $attributeNames = null)
{
$this->expires_at = new Expression('now() + interval ' . $this->tokenExpiration . ' minute');
return parent::save($runValidation, $attributeNames);
}
public function beforeSave($insert)
{
if ($insert) {
try {
$prevToken = static::findOne(['user_id' => $this->user_id]);
$prevToken->delete();
} catch (\Throwable $e) {
}
}
return parent::beforeSave($insert);
}
public function getUser()
{
return $this->hasOne(User::className(), ['id' => 'user_id']);
}
public static function deleteExpired()
{
static::deleteAll([
'<', 'expires_at', ValueHelper::now(),
]);
}
}