diff --git a/beike/Admin/Http/Controllers/AdminRoleController.php b/beike/Admin/Http/Controllers/AdminRoleController.php index f48df8eb..dfe18b08 100644 --- a/beike/Admin/Http/Controllers/AdminRoleController.php +++ b/beike/Admin/Http/Controllers/AdminRoleController.php @@ -30,9 +30,9 @@ class AdminRoleController extends Controller public function create(Request $request) { - $adminUser = Auth::guard(AdminUser::AUTH_GUARD)->user(); + $permissionRepo = (new PermissionRepo()); $data = [ - 'permissions' => (new PermissionRepo($adminUser))->getAllPermissions(), + 'permissions' => $permissionRepo->getAllPermissions(), ]; return view('admin::pages.admin_roles.edit', $data); } diff --git a/beike/Admin/Repositories/PermissionRepo.php b/beike/Admin/Repositories/PermissionRepo.php index 65a2d251..3c5d4c22 100644 --- a/beike/Admin/Repositories/PermissionRepo.php +++ b/beike/Admin/Repositories/PermissionRepo.php @@ -12,14 +12,23 @@ namespace Beike\Admin\Repositories; use Beike\Models\AdminUser; +use Spatie\Permission\Models\Role; class PermissionRepo { 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 { return [ - ['code' => 'product_list', 'name' => '商品列表', 'selected' => $this->adminUser->hasAnyPermission('product_list')], - ['code' => 'product_create', 'name' => '商品创建', 'selected' => $this->adminUser->hasAnyPermission('product_create')], - ['code' => 'product_show', 'name' => '商品详情', 'selected' => $this->adminUser->hasAnyPermission('product_show')], - ['code' => 'product_update', 'name' => '商品编辑', 'selected' => $this->adminUser->hasAnyPermission('product_update')], - ['code' => 'product_delete', 'name' => '商品删除', 'selected' => $this->adminUser->hasAnyPermission('product_delete')], + ['code' => 'product_list', 'name' => '商品列表', 'selected' => $this->hasPermission('product_list')], + ['code' => 'product_create', 'name' => '商品创建', 'selected' => $this->hasPermission('product_create')], + ['code' => 'product_show', 'name' => '商品详情', 'selected' => $this->hasPermission('product_show')], + ['code' => 'product_update', 'name' => '商品编辑', 'selected' => $this->hasPermission('product_update')], + ['code' => 'product_delete', 'name' => '商品删除', 'selected' => $this->hasPermission('product_delete')], ]; } @@ -69,11 +78,28 @@ class PermissionRepo private function getOrderPermissions(): array { return [ - ['code' => 'order_list', 'name' => '订单列表', 'selected' => $this->adminUser->hasAnyPermission('order_list')], - ['code' => 'order_create', 'name' => '订单创建', 'selected' => $this->adminUser->hasAnyPermission('order_create')], - ['code' => 'order_show', 'name' => '订单详情', 'selected' => $this->adminUser->hasAnyPermission('order_show')], - ['code' => 'order_update', 'name' => '订单编辑', 'selected' => $this->adminUser->hasAnyPermission('order_update')], - ['code' => 'order_delete', 'name' => '订单删除', 'selected' => $this->adminUser->hasAnyPermission('order_delete')], + ['code' => 'order_list', 'name' => '订单列表', 'selected' => $this->hasPermission('order_list')], + ['code' => 'order_create', 'name' => '订单创建', 'selected' => $this->hasPermission('order_create')], + ['code' => 'order_show', 'name' => '订单详情', 'selected' => $this->hasPermission('order_show')], + ['code' => 'order_update', 'name' => '订单编辑', 'selected' => $this->hasPermission('order_update')], + ['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; + } }