@@ 72-88 (lines=17) @@ | ||
69 | * |
|
70 | * @return \Illuminate\Database\Eloquent\Builder |
|
71 | */ |
|
72 | public function scopePermission(Builder $query, $permissions): Builder |
|
73 | { |
|
74 | $permissions = $this->convertToPermissionModels($permissions); |
|
75 | ||
76 | $roleIdsWithPermission = $this->convertPermissionsToRoleIds($permissions); |
|
77 | ||
78 | return $query->where(function (Builder $query) use ($permissions, $roleIdsWithPermission) { |
|
79 | $query->whereHas('permissions', function (Builder $subQuery) use ($permissions) { |
|
80 | $subQuery->whereIn(config('permission.table_names.permissions').'.id', \array_column($permissions, 'id')); |
|
81 | }); |
|
82 | if (count($roleIdsWithPermission) > 0) { |
|
83 | $query->orWhereHas('roles', function (Builder $subQuery) use ($roleIdsWithPermission) { |
|
84 | $subQuery->whereIn(config('permission.table_names.roles').'.id', $roleIdsWithPermission); |
|
85 | }); |
|
86 | } |
|
87 | }); |
|
88 | } |
|
89 | ||
90 | /** |
|
91 | * Scope the model query without certain permissions. |
|
@@ 98-114 (lines=17) @@ | ||
95 | * |
|
96 | * @return \Illuminate\Database\Eloquent\Builder |
|
97 | */ |
|
98 | public function scopeWithoutPermission(Builder $query, $permissions): Builder |
|
99 | { |
|
100 | $permissions = $this->convertToPermissionModels($permissions); |
|
101 | ||
102 | $roleIdsWithPermission = $this->convertPermissionsToRoleIds($permissions); |
|
103 | ||
104 | return $query->where(function (Builder $query) use ($permissions, $roleIdsWithPermission) { |
|
105 | $query->whereDoesntHave('permissions', function (Builder $subQuery) use ($permissions) { |
|
106 | $subQuery->whereIn(config('permission.table_names.permissions').'.id', \array_column($permissions, 'id')); |
|
107 | }); |
|
108 | if (count($roleIdsWithPermission) > 0) { |
|
109 | $query->whereDoesntHave('roles', function (Builder $subQuery) use ($roleIdsWithPermission) { |
|
110 | $subQuery->whereIn(config('permission.table_names.roles').'.id', $roleIdsWithPermission); |
|
111 | }); |
|
112 | } |
|
113 | }); |
|
114 | } |
|
115 | ||
116 | /** |
|
117 | * @param string|array|\Spatie\Permission\Contracts\Permission|\Illuminate\Support\Collection $permissions |