管理平台 > 权限管理 > 权限节点 permission
管理
开发环境:
homestead: Ubuntu + Nginx + PHP7 + Mysql
Yii: yii2-app-advanced
本人使用的是 yii2-app-advanced
版本来进行开发,如果使用 yii2-app-basic
,请修改相应的命名空间。
由于本人表单使用原生 html
,所以在书写的时候要格外注意 csrf
的设置,不然的话,表单将无法提交成功。
首先关于 RBAC
的使用方式请参考本人另外一篇文章 Yii2 使用 RBAC
创建控制器
建立 PermissionController
来管理权限节点
1 |
|
展示权限列表
用 vendor/yiisoft/yii2/rbac/BaseManager.php
文件中 getPermissions
方法将所有权限节点取出来,展示成列表1
2
3
4
5
6
7# 控制器方法
public function actionIndex()
{
$auth = Yii::$app->authManager;
$data = $auth->getPermissions();
return $this->render('index', ['data' => $data]);
}
1 |
|
创建权限
展示创建表单和实现创建权限,首先用 createPermission
方法创建权限对象,之后调用 vendor/yiisoft/yii2/rbac/BaseManager.php
文件中 add
方法入库1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22# 控制器方法
public function actionCreate()
{
$error = '';
if (Yii::$app->getRequest()->getIsPost()) {
$auth = Yii::$app->authManager;
$name = Yii::$app->getRequest()->post('name', '');
if ($name) {
$data = $auth->createPermission($name);
$data->description = Yii::$app->getRequest()->post('description', '');
try {
$auth->add($data);
return $this->redirect(['permission/index']);
} catch (\Exception $e) {
$error = $e->getMessage();
}
} else {
$error = '请输入权限名称';
}
}
return $this->render('create', ['error' => $error]);
}
1 |
|
更新权限
展示更新表单和 POST 方法实现权限节点更新,调用 vendor/yiisoft/yii2/rbac/BaseManager.php
文件中 update
方法实现更新1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20public function actionUpdate()
{
$error = '';
$name = Yii::$app->getRequest()->get('name', '');
$auth = Yii::$app->authManager;
$permission = $auth->getPermission($name);
if (Yii::$app->getRequest()->getIsPost()) {
$newName = Yii::$app->getRequest()->post('new_name', '');
$permission->name = $newName;
$permission->description = Yii::$app->getRequest()->post('description', '');
try {
$auth->update($name, $permission);
return $this->redirect(['permission/index']);
} catch (\Exception $e) {
$error = $e->getMessage();
}
}
return $this->render('update', ['model' => $permission, 'error' => $error]);
}
1 |
|
权限删除
删除权限节点,调用 vendor/yiisoft/yii2/rbac/BaseManager.php
文件中 remove
方法实现1
2
3
4
5
6
7
8
9
10public function actionDelete()
{
$name = Yii::$app->getRequest()->get('name', '');
$auth = Yii::$app->authManager;
$permission = $auth->getPermission($name);
if ($auth->remove($permission)) {
return $this->redirect(['permission/index']);
}
die('删除失败');
}
这样权限节点管理就结束了,下一节我将写角色管理。
©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息。
End