Как изменить меню на боковой панели Admin LTE согласно ролям в yii2?
Я использую Yii2 Basic.
У меня есть таблица Employee, и я назначил модель Employee для пользовательского компонента приложения в файле конфигурации следующим образом:
'user' => [
'identityClass' => 'app\models\Employee',
'enableSession' => true,
],
Я также создал разрешения, роли и назначил роли сотрудникам с помощью RBAC.
1. Теперь, когда сотрудник с ролью администратора входит в систему, он может увидеть следующие меню на боковой панели Admin LTE:
- Мастера
- Работник
- Обучение персонала
- SHGProfile
- Опрос
Когда сотрудник, который выполняет роль fieldofficer, входит в систему, он также видит меню выше на боковой панели. Fieldofficer должен видеть только следующие меню:
- Мой профайл
- SHGProfile
Как изменить меню на боковой панели Admin LTE в соответствии с ролями сотрудников?
2. Сотрудник должен иметь возможность войти в систему, только если роль назначена сотруднику. Как это сделать?
1 ответ
Я новичок в Yii 2, сделал что-то подобное на прошлой неделе. Надеюсь, поможет.
Вы можете использовать Rbac для выполнения задачи, которую вы хотите. Чтобы узнать больше о RBAC: https://en.wikipedia.org/wiki/Role-based_access_control
Существует плагин Yii 2 для реализации RBAC в вашей системе. https://github.com/dektrium/yii2-rbac
Вы можете назначать роли пользователям. И дать разрешения для этих ролей, в основном это родительский род родственников.
Каждый раз, когда вы создаете нового пользователя, назначьте ему разрешение следующим образом:
$auth = Yii::$app->authManager; $admin = $auth->getRole('admin'); $auth->assign($admin, 1); // the second parameter is user id
Назначьте разрешение роли:
$auth = Yii::$app->authManager; $admin = $auth->getRole('admin'); $permCheckAdmin = $auth->createPermission('permCheckAdmin'); $permCheckAdmin->description = 'Check if admin'; $auth->add($permCheckAdmin); $auth->addChild($admin, $permCheckAdmin);
Проверьте, есть ли у пользователя разрешение или нет:
Yii:: $ app-> user-> может ('permCheckAdmin');
- Вы можете назначить разрешения администратору и сотруднику и использовать действие в соответствии с разрешением.
Надеюсь, поможет