If you wish to use Doctrine 2 ORM entities (ORM) or MongoDB ODM Documents (ODM), all you will need to do is
having your authentication identity implement either Zend\Permissions\Acl\Role\RoleInterface
or
BjyAuthorize\Provider\Role\ProviderInterface
.
Here's some simple steps to do this specifically with ZfcUserDoctrineORM
, though any authentication service
will work too:
Install and enable ZfcUser
and ZfcUserDoctrineORM
:
php composer.phar require zf-commons/zfc-user-doctrine-orm:0.1.*
You will obviously need to enable all the involved modules
Implement a MyNamespace\User
and a MyNamespace\Role
entity.
You can use the User.php.dist
and Role.php.dist
files as blueprint.
You will need to override the settings of ZfcUserDoctrineORM
to use the entities you defined:
return array(
'doctrine' => array(
'driver' => array(
// overriding zfc-user-doctrine-orm's config
'zfcuser_entity' => array(
'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver',
'paths' => 'path/to/your/entities/dir',
),
'orm_default' => array(
'drivers' => array(
'MyNamespace' => 'zfcuser_entity',
),
),
),
),
'zfcuser' => array(
// telling ZfcUser to use our own class
'user_entity_class' => 'MyNamespace\User',
// telling ZfcUserDoctrineORM to skip the entities it defines
'enable_default_entities' => false,
),
'bjyauthorize' => array(
// Using the authentication identity provider, which basically reads the roles from the auth service's identity
'identity_provider' => 'BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider',
'role_providers' => array(
// using an object repository (entity repository) to load all roles into our ACL
'BjyAuthorize\Provider\Role\ObjectRepositoryProvider' => array(
'object_manager' => 'doctrine.entitymanager.orm_default',
'role_entity_class' => 'MyNamespace\Role',
),
),
),
);
This setup will simply check the current identity: if none is set, it will use the default role configured in the
BjyAuthorize\Provider\Identity\AuthenticationIdentityProvider
, otherwise it will try to extract the roles from
your user object.