Catalog Visibility Add-On

The SubloginCatalogVisibility add-on provides product visibility restrictions per sublogin with whitelist and blacklist modes.

Overview

The Catalog Visibility add-on extends the base Sublogin module with:

  • Product Restrictions: Control which products each sublogin can see
  • Whitelist Mode: Show only assigned products
  • Blacklist Mode: Hide assigned products
  • Collection Filtering: Automatic filtering across all product lists
  • Search Integration: Restricted products don't appear in search

Installation

composer config bearer.repo.softwaresilo.io composer config repositories.softwaresilo composer https://repo.softwaresilo.io/ composer require mageb2b/sublogin-catalogvisibility:* php bin/magento module:enable MageB2B_SubloginCatalogVisibility php bin/magento setup:upgrade php bin/magento cache:flush

Core Concepts

Restriction Type

Determines how product assignments are interpreted:

  • Whitelist (0): Show ONLY assigned products
  • Blacklist (1): Hide assigned products, show all others

Product Assignment

Products are assigned to sublogins via customer_sublogin_catalog_visibility table.

Collection Filtering

System automatically filters product collections based on restrictions.

Configuration

Set Restriction Type for Sublogin

Method 1: Admin Panel

  1. Navigate to Customers >All Customers
  2. Edit customer
  3. Go to Sublogins tab
  4. Edit sublogin
  5. Find Catalog Visibility section
  6. Set Restriction Type:
    • Whitelist: Show only assigned products
    • Blacklist: Hide assigned products
  7. Save sublogin

Method 2: Customer Account

  1. Log in as customer
  2. Go to My Sublogins
  3. Edit sublogin
  4. Configure catalog visibility
  5. Save

Restriction Modes

Whitelist Mode (Restrictive)

Behavior: Sublogin can ONLY see assigned products.

Configuration:

Restriction Type: Whitelist (0) Assigned Products: Product A, Product B, Product C

Result:

  • Product A: ✓ Visible
  • Product B: ✓ Visible
  • Product C: ✓ Visible
  • Product D: ✗ Hidden
  • Product E: ✗ Hidden

Use Cases:

  • Sales rep with specific product portfolio
  • Department-specific catalogs
  • Regional product restrictions
  • Customer-specific assortments

Blacklist Mode (Permissive)

Behavior: Sublogin can see ALL products EXCEPT assigned ones.

Configuration:

Restriction Type: Blacklist (1) Assigned Products: Product X, Product Y

Result:

  • Product A: ✓ Visible
  • Product B: ✓ Visible
  • Product C: ✓ Visible
  • Product X: ✗ Hidden
  • Product Y: ✗ Hidden

Use Cases:

  • Hide discontinued products
  • Exclude competitor products
  • Remove restricted items
  • Hide internal-use products

Assigning Products

Method 1: Admin Panel - Sublogin Edit

  1. Edit sublogin
  2. Go to Catalog Visibility section
  3. Click Assign Products
  4. Product grid appears with checkboxes
  5. Search/filter products
  6. Check products to assign
  7. Click Save

Product Grid Columns:

  • Checkbox
  • Product ID
  • Name
  • SKU
  • Price
  • Status
  • Visibility

Method 2: Admin Panel - Product Edit

  1. Edit product
  2. Go to Sublogin Visibility section
  3. Select sublogins to assign
  4. Save product

Method 3: Bulk Assignment

  1. Go to Catalog >Products
  2. Select multiple products
  3. Actions dropdown: Assign to Sublogins
  4. Select sublogins
  5. Submit

Where Restrictions Apply

Category Pages

Products are filtered based on restrictions:

Category: Electronics Total Products: 100 Sublogin with Whitelist (10 products assigned): → Shows 10 products Sublogin with Blacklist (5 products assigned): → Shows 95 products

Search Results

Restricted products don't appear in search:

Search: "laptop" Total Results: 20 Sublogin with Whitelist (3 laptops assigned): → Shows 3 results Sublogin with Blacklist (2 laptops assigned): → Shows 18 results

Product Detail Pages

Direct access to restricted products:

Whitelist Mode: - Assigned product: Page loads normally - Non-assigned product: 404 Not Found Blacklist Mode: - Non-assigned product: Page loads normally - Assigned product: 404 Not Found

Related products are also filtered:

Product A has related products: B, C, D, E Sublogin can only see: A, B, C → Related products shown: B, C → Related products hidden: D, E

Upsell/Cross-sell

Same filtering applies to upsell and cross-sell products.

Layered Navigation

Filters reflect only visible products:

Category: Clothing Filter: Size Sublogin sees 10 products (sizes: S, M, L) → Size filter shows: S, M, L → Size filter hides: XL, XXL (no visible products)

Practical Examples

Example 1: Sales Representative Portfolio

Scenario: Sales rep can only sell specific product lines.

Sublogin: Sales Rep A Restriction Type: Whitelist Assigned Products: - Product Line: Office Furniture - Categories: Desks, Chairs, Storage - Total Products: 45 Result: - Can see: 45 office furniture products - Cannot see: All other products - Search: Only returns office furniture - Categories: Only office furniture categories visible

Use Case: Territory-based sales, product specialization

Example 2: Regional Restrictions

Scenario: EU sublogin cannot see US-only products.

Sublogin: EU Branch Restriction Type: Blacklist Assigned Products: - Products with attribute "region" = "US Only" - Total Products: 120 Result: - Can see: All products except 120 US-only - Cannot see: 120 US-only products - Search: US-only products excluded

Use Case: Regional compliance, shipping restrictions

Example 3: Department-Specific Catalog

Scenario: IT department only sees IT products.

Sublogin: IT Department Restriction Type: Whitelist Assigned Products: - Category: Computers & Electronics - Category: Software - Category: Accessories - Total Products: 200 Result: - Can see: 200 IT-related products - Cannot see: Office supplies, furniture, etc. - Budget: Applied only to visible products

Use Case: Department budgets, purchasing control

Example 4: Hide Discontinued Products

Scenario: Hide discontinued products from all sublogins.

Sublogin: All Employees Restriction Type: Blacklist Assigned Products: - Products with status "Discontinued" - Total Products: 35 Result: - Can see: All active products - Cannot see: 35 discontinued products - Main customer: Can still see all products

Use Case: Product lifecycle management

Integration with Other Features

With Roles & Permissions

Sublogin: Sales Rep Role: Sales Representative Permissions: - view_product_list - view_product_details - view_product_prices - add_product_to_cart Catalog Visibility: - Whitelist: 50 assigned products Result: - Can view and add to cart: 50 assigned products - Cannot checkout (no place_order permission)

With Budget Management

Sublogin: Department Manager Budget: €5000/month Catalog Visibility: - Whitelist: Department-specific products Result: - Budget applies only to visible products - Cannot exceed budget on visible products - Cannot see or order restricted products

With Order Approval

Sublogin: Employee Order Approval: Required Catalog Visibility: - Whitelist: Approved products only Result: - Can only order from approved product list - Orders require manager approval - Manager sees same product restrictions

Performance Considerations

Collection Filtering

System adds WHERE clause to product collections:

-- Whitelist Mode WHERE entity_id IN (SELECT product_id FROM customer_sublogin_catalog_visibility WHERE sublogin_id = ?) -- Blacklist Mode WHERE entity_id NOT IN (SELECT product_id FROM customer_sublogin_catalog_visibility WHERE sublogin_id = ?)

Caching

  • Product collections are cached per sublogin
  • Cache is invalidated when assignments change
  • Full page cache considers sublogin ID

Indexing

  • No additional indexes required
  • Uses existing product indexes
  • Foreign key indexes on visibility table

Troubleshooting

Products Not Filtering

  1. Check restriction type is set
  2. Verify products are assigned
  3. Clear cache: php bin/magento cache:flush
  4. Reindex: php bin/magento indexer:reindex

Wrong Products Showing

  1. Verify restriction type (Whitelist vs Blacklist)
  2. Check product assignments
  3. Review sublogin configuration
  4. Check if logged in as correct sublogin

Product Detail Page 404

  1. Check if product is assigned (Whitelist mode)
  2. Check if product is blacklisted (Blacklist mode)
  3. Verify product is enabled and visible
  4. Check product website assignment

Search Not Filtering

  1. Verify search index is up to date
  2. Reindex catalog search: php bin/magento indexer:reindex catalogsearch_fulltext
  3. Clear cache
  4. Check search configuration

Configuration Reference

Stores >Configuration > MageB2B > Sublogin Catalog Visibility - Enable Catalog Visibility: Yes/No - Default Restriction Type: Whitelist/Blacklist - Apply to Search: Yes/No - Apply to Related Products: Yes/No - Apply to Upsell/Cross-sell: Yes/No - Show Empty Categories: Yes/No - Redirect Restricted Products: 404/Home/Category

API Integration

Get Visible Products for Sublogin

GET /rest/V1/sublogin/:subloginId/catalog/products

Assign Products to Sublogin

POST /rest/V1/sublogin/:subloginId/catalog/assign { "productIds": [1, 2, 3, 4, 5] }

Remove Product Assignments

DELETE /rest/V1/sublogin/:subloginId/catalog/product/:productId

Import/Export

Export Product Assignments

php bin/magento sublogin:catalog:export --sublogin-id=5 --output=assignments.csv

Import Product Assignments

php bin/magento sublogin:catalog:import --file=assignments.csv

CSV Format:

sublogin_id,product_id,restriction_type 5,101,0 5,102,0 5,103,0

Next Steps

Found an issue with this documentation? Let us know