Skip to content

Events

GetAvailableResourceClassActionsEvent

This event is callback used by the Rest Web API to get available actions for a resource class.

Your event subscriber receives an instance of Dbp\Relay\AuthorizationBundle\Event\GetAvailableResourceClassActionsEvent and can specify the set of available

  • resource item actions (like 'get' (item), 'delete')
  • resource collection actions (like 'create', 'get' (collection))

for your resource class(es).

For example:

<?php

namespace Vendor\MyApp\EventSubscriber;

use Dbp\Relay\AuthorizationBundle\Event\GetAvailableResourceClassActionsEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class GetAvailableResourceClassActionsEventSubscriber implements EventSubscriberInterface
{
    private const RESOURCE_CLASS = 'VendorMyAppMyResource';

    public static function getSubscribedEvents(): array
    {
        return [
            GetAvailableResourceClassActionsEvent::class => 'onGetAvailableResourceClassActionsEvent',
        ];
    }

    public function onGetAvailableResourceClassActionsEvent(GetAvailableResourceClassActionsEvent $event)
    {
        switch ($event->getResourceClass()) {
            case self::RESOURCE_CLASS:
                $event->setItemActions(['read', 'update', 'delete']);
                $event->setCollectionActions(['create']);
                break;
            // case self::ANOTHER_RESOURCE_CLASS:
            //   ...
        }
    }
}

Be sure to only set the actions for your own resource classes, becuase your subscriber will be called whenever available actions are requested.