如何根据yii2中的角色更改Admin LTE边栏上的菜单?

时间:2017-09-12 13:24:58

标签: yii2-basic-app adminlte yii2-user yii2-rbac yii2-user-roles

我正在使用Yii2 basic。

我有Employee表,我已将Employee模型分配给用户应用程序组件,如下所示在配置文件中:

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

我还使用RBAC为员工创建了权限,角色和分配的角色。

1。现在,当管理员的角色为admin时,他可以在Admin LTE的侧边栏上看到foll菜单:

  1. 大师
  2. 员工
  3. 员工培训
  4. SHGProfile
  5. 调查
  6. 当角色为fieldofficer的员工登录时,他还会在侧栏上看到上面的菜单。 Fieldofficer应该只看到foll菜单:

    1. 我的个人资料
    2. SHGProfile
    3. 如何根据员工的角色更改Admin LTE边栏上的菜单?

      2。只有在为员工分配角色时,员工才能登录系统。怎么做到这一点?

1 个答案:

答案 0 :(得分:0)

我是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->用户每个可以( 'permCheckAdmin');

  • 您可以根据权限为admin和employee分配权限并使用操作。

希望有所帮助