agusedyc / yii2-mimin
简单的 RBAC 管理器
Requires
README
为 Yii 2.0.0 开发的简单 RBAC 管理器。基于yii2-admin 扩展的精简版本,具有强大的功能
注意
在安装和使用此扩展之前,请确保您的应用程序已经使用数据库登录认证。特别是对于 yii 基本模板。因为没有它,此扩展将产生错误并变得无用。
安装
安装此扩展的最佳方式是通过 composer。
运行以下命令之一
php composer.phar require --prefer-dist agusedyc/yii2-mimin "~1.1.6"
或添加
"agusedyc/yii2-mimin": "~1.1.6"
将以下内容添加到您的 composer.json
文件的 require 部分。
"agusedyc/yii2-mimin": "~1.*"
配置
扩展安装完成后,只需在您的代码中通过以下方式使用它
在配置中
'as access' => [ 'class' => '\agusedyc\mimin\components\AccessControl', 'allowActions' => [ // add wildcard allowed action here! 'site/*', 'debug/*', 'mimin/*', // only in dev mode ], ], ..., 'modules' => [ 'mimin' => [ 'class' => '\agusedyc\mimin\Module', ], ... ], 'components' => [ 'authManager' => [ 'class' => 'yii\rbac\DbManager', // only support DbManager ], ],
因为此扩展使用 'yii\rbac\DbManager' 作为认证管理器,所以您应该首先迁移 rbac sql
yii migrate --migrationPath=@yii/rbac/migrations
如果您使用的是 Yii 2.0.6 版本或更高版本,那么迁移此扩展的自定义表
yii migrate --migrationPath=@agusedyc/mimin/migrations
但是如果您安装的是 Yii 2.0.5 版本或更低版本,那么迁移此扩展的自定义表
yii migrate --migrationPath=@agusedyc/mimin/migrations/old
使用方法
此 RBAC 管理器有三个主要页面,它们是
路由
获取应用程序中的所有动作路由。在此,您可以开启/关闭权限以便不在菜单角色中显示,重命名动作路由的别名/类型,使其易于用户阅读。您可以通过以下 URL 访问 路由
https:///path/to/index.php?r=mimin/route
角色
定义用户的级别访问,例如他是否是超级管理员、员工、收银员等。在此菜单中,您可以分配权限/动作路由(应用程序中的操作,例如创建、更新、删除等)到角色。您可以通过以下 URL 访问 角色
https:///path/to/index.php?r=mimin/role
用户
用于标准用户管理,创建/更新/删除用户,并将角色分配给用户。您可以通过以下 URL 访问 用户
https:///path/to/index.php?r=mimin/user
我们建议您激活美观的 URL。
小部件实现
示例动态按钮
用于检查是否有访问路由的权限
if ((Mimin::checkRoute($this->context->id.'/create'))){ echo Html::a('Create Note', ['create'], ['class' => 'btn btn-success']); } // in other case maybe You want ensure same of route so You can add parameter strict true if ((Mimin::checkRoute($this->context->id.'/create',true))){
示例动态菜单
用于过滤可访问的菜单权限
use agusedyc\mimin\components\Mimin; $menuItems = [ ['label' => 'Home', 'url' => ['/site/index']], ['label' => 'About', 'url' => ['/site/about']], ['label' => 'Contact', 'url' => ['/site/contact']], ]; if (\Yii::$app->user->isGuest){ $menuItems[] = ['label' => 'Login', 'url' => ['/site/login']]; } else{ $menuItems[] = ['label' => 'App', 'items' => [ ['label' => 'Category', 'url' => ['/category/index']], ['label' => 'Product', 'url' => ['/product/index']], ['label' => 'Cart', 'url' => ['/cart/index']], ]]; $menuItems[] = [ 'label' => 'Logout (' . \Yii::$app->user->identity->username . ')', 'url' => ['/site/logout'], 'linkOptions' => ['data-method' => 'post'] ]; } $menuItems = Mimin::filterMenu($menuItems); // in other case maybe You want ensure same of route so You can add parameter strict true // $menuItems = Mimin::filterMenu($menuItems,true); echo Nav::widget([ 'options' => ['class' => 'navbar-nav navbar-right'], 'items' => $menuItems, ]);
示例动态动作列模板
用于过滤 Gridview 动作列的模板
use agusedyc\mimin\components\Mimin; echo GridView::widget([ 'dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [ ..., [ 'class' => 'yii\grid\ActionColumn', 'template' => Mimin::filterActionColumn([ 'update','delete','download' ],$this->context->route), ... ] ] ]);
如何贡献
此工具是一个开源项目,因此您的贡献非常受欢迎。
要开始贡献
- 在本地安装此工具(阅读安装部分)
- 克隆此存储库。
- 查看 README.md。
- 发送 pull requests。
除了通过 pull requests 贡献之外,您还可以 提交问题。
我们的团队
- Hafid Mukhlasin - 项目负责人 / 印尼 Yii 开发者。
我们感谢我们的 贡献者 提高了这个工具。谢谢!
雅加达 - 印度尼西亚
指南书
本书全面讨论了基于Yii 2的RBAC(基于角色的访问控制)或访问控制以及yii2-mimin的指南。更多内容请参阅我的书籍:https://hscstudio.github.io/yii2-book-id