public function execute($user, $item, $params) { if (!Yii::$app->user->isGuest) { $group = Yii::$app->user->identity->role_id; // получаем id Модератора из таблицы Role $moder_id = Role::getIdByName('moderator'); // получаем id Писателя из таблицы Role $writer_id = Role::getIdByName('writer'); if ($item->name === 'moderator') { return $group == $moder_id; } elseif ($item->name === 'writer') { $role = Role::findOne(['name' => 'moderator']); return $group == $moder_id || $group == $writer_id; } } return FALSE; }
public function isNewsOwnerOrModer($newsId) { // получаем модель редактируемой новости $model = $this->findModel($newsId); // пользователь, который пытается редактировать профиль $currentUser = Yii::$app->user->identity; // id модератора из модели Role $moderatorId = Role::getIdByName('moderator'); /* если пользователь, который редактирует/просматривает профиль * не модератор и не пользователь текущего профиля */ if ($currentUser->role_id !== $moderatorId && $currentUser->id !== $model->author_id) { return FALSE; } else { return TRUE; } }
<?php use yii\helpers\Html; use yii\helpers\ArrayHelper; use yii\widgets\ActiveForm; use app\models\Role; ?> <div class="user-form"> <?php // если пользователь модератор if (Yii::$app->user->identity->role_id == app\models\Role::getIdByName('moderator')) { ?> <?php $form = ActiveForm::begin(); ?> <?php echo $form->field($model, 'role_id')->dropDownList(ArrayHelper::map(role::find()->all(), 'id', 'name')); ?> <?php echo $form->field($model, 'email')->textInput(['maxlength' => true]); ?> <?php echo $form->field($model, 'password')->passwordInput(['maxlength' => true]); ?>