diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index db8b1d54..fa754409 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -112,25 +112,25 @@ class UserController extends Controller } return view('admin.user.index', [ - 'userList' => $query->orderByDesc('id')->paginate(15)->appends($request->except('page')), + 'userList' => $query->orderByDesc('id')->paginate(15)->appends($request->except('page')), 'userGroups' => UserGroup::all()->pluck('name', 'id')->toArray(), - 'levels' => Level::all()->pluck('name', 'level')->toArray(), + 'levels' => Level::all()->pluck('name', 'level')->toArray(), ]); } // 添加账号页面 public function create() { - if (Auth::getUser()->hasRole('Super Admin')) { + if (Auth::getUser()->hasRole('Super Admin')) { // 超级管理员直接获取全部角色 $roles = Role::all()->pluck('description', 'name'); - } elseif (Auth::getUser()->hasPermissionTo('give roles')) { - $roles = Auth::getUser()->roles(); + } elseif (Auth::getUser()->can('give roles')) { // 有权者只能获得已有角色,防止权限泛滥 + $roles = Auth::getUser()->roles()->pluck('description', 'name'); } return view('admin.user.info', [ - 'levels' => Level::orderBy('level')->get(), + 'levels' => Level::orderBy('level')->get(), 'userGroups' => UserGroup::orderBy('id')->get(), - 'roles' => $roles ?? [], + 'roles' => $roles ?? null, ]); } @@ -153,8 +153,9 @@ class UserController extends Controller $roles = $request->input('roles'); try { - if ($roles && (Auth::getUser()->hasPermissionTo('give roles') || (in_array('Super Admin', $roles, true) - && Auth::getUser()->hasRole('Super Admin')) || Auth::getUser()->hasRole('Super Admin'))) { + if ($roles && (Auth::getUser()->can('give roles') || (in_array('Super Admin', $roles, true) && Auth::getUser()->hasRole('Super Admin')))) { + // 编辑用户权限 + // 只有超级管理员才有赋予超级管理的权限 $user->assignRole($roles); } @@ -176,17 +177,17 @@ class UserController extends Controller // 编辑账号页面 public function edit(User $user) { - if (Auth::getUser()->hasRole('Super Admin')) { + if (Auth::getUser()->hasRole('Super Admin')) { // 超级管理员直接获取全部角色 $roles = Role::all()->pluck('description', 'name'); - } elseif (Auth::getUser()->hasPermissionTo('give roles')) { - $roles = Auth::getUser()->roles(); + } elseif (Auth::getUser()->can('give roles')) { // 有权者只能获得已有角色,防止权限泛滥 + $roles = Auth::getUser()->roles()->pluck('description', 'name'); } return view('admin.user.info', [ - 'user' => $user->load('inviter:id,email'), - 'levels' => Level::orderBy('level')->get(), + 'user' => $user->load('inviter:id,email'), + 'levels' => Level::orderBy('level')->get(), 'userGroups' => UserGroup::orderBy('id')->get(), - 'roles' => $roles ?? [], + 'roles' => $roles ?? null, ]); } @@ -205,7 +206,7 @@ class UserController extends Controller // 只有超级管理员才能赋予超级管理员 $roles = $request->input('roles'); try { - if ($roles && (Auth::getUser()->hasPermissionTo('give roles') || (in_array('Super Admin', $roles, true) + if ($roles && (Auth::getUser()->can('give roles') || (in_array('Super Admin', $roles, true) && Auth::getUser()->hasRole('Super Admin')) || Auth::getUser()->hasRole('Super Admin'))) { $user->syncRoles($roles); } @@ -323,7 +324,7 @@ class UserController extends Controller public function export(User $user) { return view('admin.user.export', [ - 'user' => $user, + 'user' => $user, 'nodeList' => Node::whereStatus(1)->orderByDesc('sort')->orderBy('id')->paginate(15)->appends(\request('page')), ]); } diff --git a/app/Http/Requests/Admin/RoleRequest.php b/app/Http/Requests/Admin/RoleRequest.php index 129abe6e..bbc06da4 100644 --- a/app/Http/Requests/Admin/RoleRequest.php +++ b/app/Http/Requests/Admin/RoleRequest.php @@ -8,8 +8,13 @@ class RoleRequest extends FormRequest { public function rules() { + $unq_name = ''; + if ($this->method() === 'PUT' || $this->method() === 'PATCH') { + $unq_name = ','.$this->role->id; + } + return [ - 'name' => 'required|string', + 'name' => 'required|string|unique:roles,name'.$unq_name, 'description' => 'required|string', 'permissions' => 'exists:permissions,name', ]; diff --git a/resources/views/admin/role/info.blade.php b/resources/views/admin/role/info.blade.php index 9f644697..e820efc1 100644 --- a/resources/views/admin/role/info.blade.php +++ b/resources/views/admin/role/info.blade.php @@ -28,19 +28,19 @@ @isset($role)@method('PUT')@endisset @csrf
- -
- - 名称,例如:管理员 -
-
-
- +
- 名称,例如:Administrator + 唯一标识名称,例如:Administrator
+
+ +
+ + 面板显示名称,例如:管理员 +
+