HEX
Server: LiteSpeed
System: Linux premium260.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User: aliazzsr (627)
PHP: 7.4.33
Disabled: NONE
Upload Files
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(),
        ]);
    }
}