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