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

Я использую базовую версию Yii2.

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

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

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

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

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

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

  1. Мой профайл
  2. SHGProfile

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

2. Сотрудник должен иметь возможность войти в систему, только если ему назначена роль. Как это сделать?


person Questions    schedule 12.09.2017    source источник


Ответы (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->can('permCheckAdmin');

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

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

person iamsourabhh    schedule 15.09.2017