There's the possibility to create customer groups, where you can insert a name and discount percent for every group,then you can link every customer to a customer group. The customer will get the inserted discount when he/she checks out. The idea is that customers can't see certain categories with products, which is uses the technique of the current customer groups.
When you add or edit a category there will be a list with the created customer groups from the current customer groups function. You can select one or more groups from this list, and will be stored for the added or edited category.
When the customer logs in on the webshop, the system will check to which customer group the customer is linked to. Then it will select the categories from the database that are linked to the customer group of the logged in customer. Only the selected categories with the products in them will be shown to the customer.
There also has to be an option that toggles the visibility of the category for customers that aren't logged in. So if a customer goes to the webshop without logging in, the system will select the categories where this option is enabled. Only these categories with the products in them will be show to the customer, but when he/she logs in the system will run the above described check, so that the correct categories according to the customer groups are shown.
If a customer tries to go to a category that isn't selected from either checks, the page will show a message that the category doesn't exist. This is the default message if a category or product actually doesn't exist, so the customer will see it like the category never existed.