Skip to content
This repository has been archived by the owner on May 14, 2018. It is now read-only.

Latest commit

 

History

History
75 lines (57 loc) · 2.72 KB

doctrine.md

File metadata and controls

75 lines (57 loc) · 2.72 KB

Using BjyAuthorize with Doctrine

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.

BjyAuthorize, ZfcUser and ZfcUserDoctrineORM

Here's some simple steps to do this specifically with ZfcUserDoctrineORM, though any authentication service will work too:

Installation

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 entities

Implement a MyNamespace\User and a MyNamespace\Role entity. You can use the User.php.dist and Role.php.dist files as blueprint.

Configuration

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.