whereDoesntHave(Page::RELATION_VIEWER_ROLES); return; } // Bypass for admins. if (Auth::user()->hasRole(RoleEnum::ADMIN->value)) { return; } $builder->where(function (Builder $query): void { $query // Public pages. ->whereDoesntHave(Page::RELATION_VIEWER_ROLES) // Pages the user can view via their roles. ->orWhereHas( Page::RELATION_VIEWER_ROLES, fn (Builder $relationQuery) => $relationQuery->whereIn( Role::TABLE.'.'.Role::ATTRIBUTE_ID, Auth::user()->roles()->select(Role::ATTRIBUTE_ID) ) ); }); } }