checkGuest($scopes, $permissionType)) { return $next($request); } return response()->json(['message' => 'Unauthorized'], 401); } foreach (explode('|', $scopes) as $scope) { if ($user->hasPermission($scope, $permissionType)) { return $next($request); } } return response()->json(['message' => 'Forbidden', 'code' => 403], 403); } protected function checkGuest(string $scopes, string $permissionType): bool { $requiredBit = Permission::getBit($permissionType); $permissions = $this->service->allGuestPermissions(); foreach (explode('|', $scopes) as $scope) { $perm = $permissions->first(fn($p) => $p->permission->scope === $scope); if ($perm && ($perm->bits & $requiredBit)) return true; } return false; } }