$ composer require ray/role-module
You need to provide RoleProvider.
class AppRoleProvider implements RoleProviderInterface
{
publicfunctionget()
{
return'admin';
}
}Install module with RoleProvider.
useRay\RoleModule\ZendAclModule;
useRay\Di\AbstractModule;
useLaminas\Permissions\Acl\Role\GenericRole;
useLaminas\Permissions\Acl\Acl;
class AppModule extends AbstractModule
{
protectedfunctionconfigure()
{
// @see http://framework.zend.com/manual/current/en/modules/zend.permissions.acl.intro.html$acl = newAcl();
$roleGuest = newGenericRole('guest');
$acl->addRole($roleGuest);
$acl->addRole(newGenericRole('staff'), $roleGuest);
$acl->addRole(newGenericRole('editor'), 'staff');
$acl->addRole(newGenericRole('administrator'));
$this->install(newZendAclModule($acl, AppRoleProvider::class));
}
}Simple usage:
useRay\RoleModule\Annotation\RequiresRoles;
#[RequiresRoles(['admin'])]
class Foo
{
publicfunction createUser($id)
{You can annotate individual method too, It has priority over class attribute.
useRay\RoleModule\Annotation\RequiresRoles;
class Foo
{
#[RequiresRoles(['admin', 'editor'])]
publicfunction createUser($id)
{$ php demo/run.php
// It works!