I'm not sure if I understand correctly. I assume that you managed to filter out the products that you want to hide, using the hook "myBeforeProductlistOutputBeforePagination" but if someone knows the exact url to the product, he can open the url and see the product that you don't want to show him. If the user doesn't know the url he might still find the product using the standard contao search (not the Merconis product search because in this case your custom filter logic comes into play).
Did I get it right? If so, the problem only exists with product detail pages. Product overview pages should not display the products that you want to hide, because the hook works there.
I would suggest that you add some code to the product details template to check if the user is logged in and if there's a reason not to display the product. In this case you could hide the actual product information and show some sort of message or you could redirect to another page, maybe the 404 error page.
It's probably a little bit "cleaner" to use the hook "beforeProductSingleviewOutput" to figure out if a product must not be displayed and then redirect to an error page but doing it in the product details template is much easier so I strongly suggest that you do it there.
Your MERCONIS Support Team