From 23fd0ae0b584748ce8bb46a0277d99bafb9217d9 Mon Sep 17 00:00:00 2001 From: Summer <summer@learnku.com> Date: Mon, 7 Mar 2022 19:11:57 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=91=98=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=9D=83=E9=99=90=E5=92=8C=E8=A7=92=E8=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/administrator.php | 2 + config/administrator/permissions.php | 67 +++++++++++++++++++++++++ config/administrator/roles.php | 75 ++++++++++++++++++++++++++++ 3 files changed, 144 insertions(+) create mode 100644 config/administrator/permissions.php create mode 100644 config/administrator/roles.php diff --git a/config/administrator.php b/config/administrator.php index fa8cbada0..03b18dc92 100644 --- a/config/administrator.php +++ b/config/administrator.php @@ -41,6 +41,8 @@ 'menu' => [ '用户与权限' => [ 'users', + 'roles', + 'permissions', ], ], diff --git a/config/administrator/permissions.php b/config/administrator/permissions.php new file mode 100644 index 000000000..08c2a1483 --- /dev/null +++ b/config/administrator/permissions.php @@ -0,0 +1,67 @@ +<?php + +use Spatie\Permission\Models\Permission; +use Illuminate\Support\Facades\Auth; + +return [ + 'title' => '权限', + 'single' => '权限', + 'model' => Permission::class, + + 'permission' => function () { + return Auth::user()->can('manage_users'); + }, + + // 对 CRUD 动作的单独权限控制,通过返回布尔值来控制权限。 + 'action_permissions' => [ + // 控制『新建按钮』的显示 + 'create' => function ($model) { + return true; + }, + // 允许更新 + 'update' => function ($model) { + return true; + }, + // 不允许删除 + 'delete' => function ($model) { + return false; + }, + // 允许查看 + 'view' => function ($model) { + return true; + }, + ], + + 'columns' => [ + 'id' => [ + 'title' => 'ID', + ], + 'name' => [ + 'title' => '标示', + ], + 'operation' => [ + 'title' => '管理', + 'sortable' => false, + ], + ], + + 'edit_fields' => [ + 'name' => [ + 'title' => '标示(请慎重修改)', + + // 表单条目标题旁的『提示信息』 + 'hint' => '修改权限标识会影响代码的调用,请不要轻易更改。' + ], + 'roles' => [ + 'type' => 'relationship', + 'title' => '角色', + 'name_field' => 'name', + ], + ], + + 'filters' => [ + 'name' => [ + 'title' => '标示', + ], + ], +]; diff --git a/config/administrator/roles.php b/config/administrator/roles.php new file mode 100644 index 000000000..522733c74 --- /dev/null +++ b/config/administrator/roles.php @@ -0,0 +1,75 @@ +<?php + +use Spatie\Permission\Models\Role; +use Illuminate\Support\Facades\Auth; + +return [ + 'title' => '角色', + 'single' => '角色', + 'model' => Role::class, + + 'permission'=> function() + { + return Auth::user()->can('manage_users'); + }, + + 'columns' => [ + 'id' => [ + 'title' => 'ID', + ], + 'name' => [ + 'title' => '标识' + ], + 'permissions' => [ + 'title' => '权限', + 'output' => function ($value, $model) { + $model->load('permissions'); + $result = []; + foreach ($model->permissions as $permission) { + $result[] = $permission->name; + } + + return empty($result) ? 'N/A' : implode(' | ', $result); + }, + 'sortable' => false, + ], + 'operation' => [ + 'title' => '管理', + 'output' => function ($value, $model) { + return $value; + }, + 'sortable' => false, + ], + ], + + 'edit_fields' => [ + 'name' => [ + 'title' => '标识', + ], + 'permissions' => [ + 'type' => 'relationship', + 'title' => '权限', + 'name_field' => 'name', + ], + ], + + 'filters' => [ + 'id' => [ + 'title' => 'ID', + ], + 'name' => [ + 'title' => '标识', + ] + ], + + // 新建和编辑时的表单验证规则 + 'rules' => [ + 'name' => 'required|max:15|unique:roles,name', + ], + + // 表单验证错误时定制错误消息 + 'messages' => [ + 'name.required' => '标识不能为空', + 'name.unique' => '标识已存在', + ] +];