Appearance
Seller user permissions
Vendors can have multiple SellerUsers administrating their shop. By default, every seller user can create other seller users. If you want that restricted to super seller users only, follow these steps.
1. Restrict access
yml
# config/packages/security.yaml
security:
access_control:
# ...
- { path: "%odiseo_marketplace.security.seller_regex%/seller-users", role: ROLE_SUPER_ADMINISTRATION_ACCESS }
- { path: "%odiseo_marketplace.security.seller_regex%", role: ROLE_ADMINISTRATION_ACCESS }2. Hide the menu entry for non-super sellers
php
<?php
// src/Menu/SellerMenuListener.php
namespace App\Menu;
use Odiseo\SyliusMarketplacePlugin\Entity\SellerUserInterface;
use Sylius\Bundle\UiBundle\Menu\Event\MenuBuilderEvent;
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
final class SellerMenuListener
{
public function __construct(
private AuthorizationCheckerInterface $authorizationChecker,
) {
}
public function menuItems(MenuBuilderEvent $event): void
{
$menu = $event->getMenu();
$configuration = $menu->getChild('configuration');
$configuration->removeChild('vendor_administrators');
if ($this->authorizationChecker->isGranted(SellerUserInterface::ROLE_SUPER_ADMINISTRATION_ACCESS)) {
$configuration
->addChild('vendor_administrators', ['route' => 'odiseo_marketplace_seller_seller_user_index'])
->setLabel('odiseo_marketplace.menu.seller.main.vendor_administrators')
->setLabelAttribute('icon', 'lock')
;
}
}
}yml
# config/services.yaml
app.listener.seller.menu_builder:
class: App\Menu\SellerMenuListener
arguments:
- '@security.authorization_checker'
tags:
- { name: kernel.event_listener, event: odiseo_marketplace.menu.seller.main, method: menuItems }