如何根据 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 中的另一个选择标签选项更改选择标签选项?