fixed roles

This commit is contained in:
Edward Yang 2022-08-01 21:52:30 +08:00
parent c06e0c5725
commit c4ca33ec32
2 changed files with 40 additions and 14 deletions

View File

@ -30,9 +30,9 @@ class AdminRoleController extends Controller
public function create(Request $request) public function create(Request $request)
{ {
$adminUser = Auth::guard(AdminUser::AUTH_GUARD)->user(); $permissionRepo = (new PermissionRepo());
$data = [ $data = [
'permissions' => (new PermissionRepo($adminUser))->getAllPermissions(), 'permissions' => $permissionRepo->getAllPermissions(),
]; ];
return view('admin::pages.admin_roles.edit', $data); return view('admin::pages.admin_roles.edit', $data);
} }

View File

@ -12,14 +12,23 @@
namespace Beike\Admin\Repositories; namespace Beike\Admin\Repositories;
use Beike\Models\AdminUser; use Beike\Models\AdminUser;
use Spatie\Permission\Models\Role;
class PermissionRepo class PermissionRepo
{ {
private $adminUser; private $adminUser;
private $adminRole;
public function __construct(AdminUser $adminUser) public function setUser(AdminUser $user): PermissionRepo
{ {
$this->adminUser = $adminUser; $this->adminUser = $user;
return $this;
}
public function setRole(Role $role): PermissionRepo
{
$this->adminRole = $role;
return $this;
} }
/** /**
@ -52,11 +61,11 @@ class PermissionRepo
private function getProductPermissions(): array private function getProductPermissions(): array
{ {
return [ return [
['code' => 'product_list', 'name' => '商品列表', 'selected' => $this->adminUser->hasAnyPermission('product_list')], ['code' => 'product_list', 'name' => '商品列表', 'selected' => $this->hasPermission('product_list')],
['code' => 'product_create', 'name' => '商品创建', 'selected' => $this->adminUser->hasAnyPermission('product_create')], ['code' => 'product_create', 'name' => '商品创建', 'selected' => $this->hasPermission('product_create')],
['code' => 'product_show', 'name' => '商品详情', 'selected' => $this->adminUser->hasAnyPermission('product_show')], ['code' => 'product_show', 'name' => '商品详情', 'selected' => $this->hasPermission('product_show')],
['code' => 'product_update', 'name' => '商品编辑', 'selected' => $this->adminUser->hasAnyPermission('product_update')], ['code' => 'product_update', 'name' => '商品编辑', 'selected' => $this->hasPermission('product_update')],
['code' => 'product_delete', 'name' => '商品删除', 'selected' => $this->adminUser->hasAnyPermission('product_delete')], ['code' => 'product_delete', 'name' => '商品删除', 'selected' => $this->hasPermission('product_delete')],
]; ];
} }
@ -69,11 +78,28 @@ class PermissionRepo
private function getOrderPermissions(): array private function getOrderPermissions(): array
{ {
return [ return [
['code' => 'order_list', 'name' => '订单列表', 'selected' => $this->adminUser->hasAnyPermission('order_list')], ['code' => 'order_list', 'name' => '订单列表', 'selected' => $this->hasPermission('order_list')],
['code' => 'order_create', 'name' => '订单创建', 'selected' => $this->adminUser->hasAnyPermission('order_create')], ['code' => 'order_create', 'name' => '订单创建', 'selected' => $this->hasPermission('order_create')],
['code' => 'order_show', 'name' => '订单详情', 'selected' => $this->adminUser->hasAnyPermission('order_show')], ['code' => 'order_show', 'name' => '订单详情', 'selected' => $this->hasPermission('order_show')],
['code' => 'order_update', 'name' => '订单编辑', 'selected' => $this->adminUser->hasAnyPermission('order_update')], ['code' => 'order_update', 'name' => '订单编辑', 'selected' => $this->hasPermission('order_update')],
['code' => 'order_delete', 'name' => '订单删除', 'selected' => $this->adminUser->hasAnyPermission('order_delete')], ['code' => 'order_delete', 'name' => '订单删除', 'selected' => $this->hasPermission('order_delete')],
]; ];
} }
/**
* 判断当前用户或者角色是否有权限
*
* @param $permission
* @return bool
*/
private function hasPermission($permission): bool
{
if ($this->adminRole) {
return $this->adminRole->hasPermissionTo($permission);
} elseif ($this->adminUser) {
return $this->adminUser->hasPermissionTo($permission);
}
return false;
}
} }