Вот таким вот кодом в модели я определяю доступ к страницам в зависимости от роли(админ - это role_id=1, пользователь - это role_id=2).
class User extends BaseUser
{
public static function getNameById($id) {
$row = self::find()->andWhere('id = :userId', array('userId' => $id))->one();
if($row)
return $row->username;
return '';
}
public static function getMenuItemsByRoleUser($isAdmin,$isGuest) {
if($isGuest)
return [];
if(Yii::$app->user->identity->role_id == 1) {
return [
['label' => 'Пользователи', 'url' => ['/user/admin/index']],
['label' => 'Права доступа', 'url' => ['/access/index']],
['label' => 'Каталог разделов', 'url' => ['/catalog/index']],
['label' => 'Сверка дат', 'url' => ['/user/admin/index1']],
['label' => 'Импорт', 'url' => ['/user/admin/index1']],
['label' => 'Экспорт', 'url' => ['/user/admin/index1']],
['label' => '', 'url' => ['/user/admin/index1']],
[
'label' => 'Выйти (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']
],
];
} else if(Yii::$app->user->identity->role_id == 2){
return [
['label' => 'Каталог разделов', 'url' => ['/catalog/index']],
['label' => 'Каталог материалов', 'url' => ['/tasks-manager/index']],
['label' => 'Отчет', 'url' => ['/tasks-manager/index']],
[
'label' => 'Выйти (' . Yii::$app->user->identity->username . ')',
'url' => ['/site/logout'],
'linkOptions' => ['data-method' => 'post']
],
];
}
}
public function getRole()
{
return $this->hasOne(Role::className(), ['id' => 'role_id']);
}
}
Но если вручную я перейду по ссылке catalog/index у меня почему то эта страница отображается даже если я не залогинился... из-за чего это может происходить? если что, этот баг появился после того как мне потребовалось изменить названия контроллеров...