Roles can be added in one of two ways, either the roles:
key in the
configuration file, or via events.
This guide explains the required steps in the process to creating an extension that adds custom roles via event.
Extension Loader Class
To add roles to Auth via your extension, you can add a listener to the
AuthEvents::AUTH_ROLE
event.
You will need the following use statements at the top of your PHP class file:
use Bolt\Extension\BoltAuth\Auth\AccessControl\Role;
use Bolt\Extension\BoltAuth\Auth\Event\AuthEvents;
use Bolt\Extension\BoltAuth\Auth\Event\AuthRolesEvent;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
In your extension's subscribe()
function you can define the listener and
pass in the callback that will be called when the event is triggered, e.g.
protected function subscribe(EventDispatcherInterface $dispatcher)
{
$dispatcher->addListener(AuthEvents::AUTH_ROLE, [$this, 'myCallbackRunction']);
}
Callback Function
The callback function will be passed a AuthRolesEvent
object, you can
then use the events addRole()
function to add \Bolt\Extension\BoltAuth\Auth\AccessControl\Role
objects, e.g.
public function myCallbackRunction(AuthRolesEvent $event)
{
$event->addRole(new Role('koala', 'Friendly Koalas'));
$event->addRole(new Role('dropbear', 'Deady Drop Bears'));
}
The Role
class takes two parameters, programmatic name and a display name
that will be used in the auth admin pages in Bolt's backend admin section.