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

Posted

技术标签:

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

我正在使用 Yii2 基础版。

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

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

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

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

    硕士 员工 员工培训 SHG个人资料 调查

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

    我的个人资料 SHG个人资料

如何根据员工的角色更改 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->can('permCheckAdmin');

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

希望对您有所帮助

【讨论】:

以上是关于如何根据 yii2 中的角色更改 Admin LTE 侧边栏上的菜单?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 Django admin 中的另一个选择标签选项更改选择标签选项?

更改Yii2中表单字段中的属性值

我想根据MVC C#中的用户角色控制视图

根据用户角色渲染 JSF 组件

如何让每个用户根据他们在 JAAS 中的权限/角色访问特定位置的资源?

如何修改yii2 admin2的前端页面