diff --git a/app/Auth/Permissions/PermissionService.php b/app/Auth/Permissions/PermissionService.php index 33d214963..8fc70e916 100644 --- a/app/Auth/Permissions/PermissionService.php +++ b/app/Auth/Permissions/PermissionService.php @@ -558,28 +558,35 @@ class PermissionService /** * Checks if a user has the given permission for any items in the system. + * Can be passed an entity instance to filter on a specific type. * @param string $permission + * @param string $entityClass * @return bool */ - public function checkUserHasPermissionOnAnything(string $permission) + public function checkUserHasPermissionOnAnything(string $permission, string $entityClass = null) { $userRoleIds = $this->currentUser()->roles()->select('id')->pluck('id')->toArray(); $userId = $this->currentUser()->id; - $canCreatePage = $this->db->table('joint_permissions') + $permissionQuery = $this->db->table('joint_permissions') ->where('action', '=', $permission) ->whereIn('role_id', $userRoleIds) ->where(function ($query) use ($userId) { $query->where('has_permission', '=', 1) - ->orWhere(function ($query2) use ($userId) { - $query2->where('has_permission_own', '=', 1) - ->where('created_by', '=', $userId); - }); - }) - ->get()->count() > 0; + ->orWhere(function ($query2) use ($userId) { + $query2->where('has_permission_own', '=', 1) + ->where('created_by', '=', $userId); + }); + }) ; + if (!is_null($entityClass)) { + $entityInstance = app()->make($entityClass); + $permissionQuery = $permissionQuery->where('entity_type', '=', $entityInstance->getMorphClass()); + } + + $hasPermission = $permissionQuery->count() > 0; $this->clean(); - return $canCreatePage; + return $hasPermission; } /** diff --git a/app/helpers.php b/app/helpers.php index 0825a2e4a..d9533645d 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -1,6 +1,7 @@ checkUserHasPermissionOnAnything($permission); + return $permissionService->checkUserHasPermissionOnAnything($permission, $entityClass); } /** diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index c7a5acca8..fdd248091 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -48,7 +48,7 @@