Как изменить меню на боковой панели Admin LTE согласно ролям в yii2?

Я использую Yii2 Basic.

У меня есть таблица Employee, и я назначил модель Employee для пользовательского компонента приложения в файле конфигурации следующим образом:

'user' => [
            'identityClass' => 'app\models\Employee',
            'enableSession' => true,
          ],

Я также создал разрешения, роли и назначил роли сотрудникам с помощью RBAC.

1. Теперь, когда сотрудник с ролью администратора входит в систему, он может увидеть следующие меню на боковой панели Admin LTE:

  1. Мастера
  2. Работник
  3. Обучение персонала
  4. SHGProfile
  5. Опрос

Когда сотрудник, который выполняет роль fieldofficer, входит в систему, он также видит меню выше на боковой панели. Fieldofficer должен видеть только следующие меню:

  1. Мой профайл
  2. 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');

  • Вы можете назначить разрешения администратору и сотруднику и использовать действие в соответствии с разрешением.

Надеюсь, поможет

Другие вопросы по тегам