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/core/RolePermission.php
<?php
namespace app\models\core;

use app\components\BaseModel;
use app\models\enums\PermissionEnum;
use yii\behaviors\AttributeTypecastBehavior;

/**
 * Class RolePermission
 * @package app\models\core
 * @property string $permission_name
 * @property boolean $create
 * @property boolean $read
 * @property boolean $update
 * @property boolean $delete
 */
class RolePermission extends BaseModel
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'role_permission';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['role_id', 'permission_name'], 'required'],
            [['create', 'read', 'update', 'delete'], 'default', 'value' => false],
            [['role_id'], 'exist', 'targetClass' => 'app\models\core\Role', 'targetAttribute' => 'id'],
            [['permission_name'], 'in', 'range' => PermissionEnum::getConstantsByName(), 'message' => 'Unknown permission type'],
            [['role_id', 'permission_name', 'create', 'read', 'update', 'delete',], 'safe'],
        ];
    }

    /**
     * @inheritdoc
     */
    public function behaviors()
    {
        $behaviors = [
            'typecast' => [
                'class' => AttributeTypecastBehavior::className(),
                'attributeTypes' => [
                    'create' => AttributeTypecastBehavior::TYPE_BOOLEAN,
                    'read' => AttributeTypecastBehavior::TYPE_BOOLEAN,
                    'update' => AttributeTypecastBehavior::TYPE_BOOLEAN,
                    'delete' => AttributeTypecastBehavior::TYPE_BOOLEAN,
                ],
                'typecastAfterValidate' => true,
                'typecastBeforeSave' => true,
                'typecastAfterFind' => true,
            ],
        ];

        return array_merge(parent::behaviors(), $behaviors);
    }
}