Links

Filter posts (or CPT) which user can’t access

The only way of checking and filtering the posts not accessible by the current user is during the post processing of the search results.
add_filter( 'asp_results', 'asp_filter_posts_by_capability', 10, 1 );
function asp_filter_posts_by_capability( $results ) {
foreach ($results as $k => &$r ) {
if ( !current_user_can('read_post', $r->id) )
unset($results[$k]);
}
return $results;
}