【问题标题】:How to change menus on sidebar of Admin LTE as per roles in yii2?如何根据 yii2 中的角色更改 Admin LTE 侧边栏上的菜单?
【发布时间】:2017-09-12 13:24:58
【问题描述】:

我正在使用 Yii2 基础版。

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

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

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

1. 现在当角色为管理员的员工登录时,他可以在 Admin LTE 的侧边栏看到以下菜单:

  1. 硕士
  2. 员工
  3. 员工培训
  4. SHG个人资料
  5. 调查

当角色为外勤人员的员工登录时,他还会在侧边栏看到上述菜单。 Fieldofficer 应该只看到以下菜单:

  1. 我的个人资料
  2. SHG个人资料

如何根据员工的角色更改 Admin LTE 侧边栏的菜单?

2. 只有为员工分配了角色,员工才能登录系统。如何做到这一点?

【问题讨论】:

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


    【解决方案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');

    • 您可以为管理员和员工分配权限,并根据权限使用操作。

    希望对您有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2017-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多