ArtboxCommentDeleteRule.php
1010 Bytes
<?php
    namespace common\modules\comment\rbac;
    use common\models\User;
    use yii\db\ActiveRecord;
    use yii\rbac\Rule;
    class ArtboxCommentDeleteRule extends Rule
    {
        public $name = 'canCommentDeleteArtbox';
        public function execute($user, $item, $params)
        {
            /**
             * @var ActiveRecord $model
             */
            if(!empty($params['model']) && !empty($params['model_id'])) {
                $model = new $params['model'];
                if($model instanceof ActiveRecord) {
                    $model = $model::findOne($params['model_id']);
                    if($model->hasAttribute('user_id') && $model->user_id == \Yii::$app->user->id) {
                        return true;
                    } elseif($model instanceof User && $model->id == \Yii::$app->user->id) {
                        return true;
                    }
                }
            }
            return false;
        }
    }