Download the PHP package api-skeletons/oauth2-doctrine-permissions-acl without Composer
On this page you can find all versions of the php package api-skeletons/oauth2-doctrine-permissions-acl. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download api-skeletons/oauth2-doctrine-permissions-acl
More information about api-skeletons/oauth2-doctrine-permissions-acl
Files in api-skeletons/oauth2-doctrine-permissions-acl
Package oauth2-doctrine-permissions-acl
Short Description ACL permissions for api-skeletons/oauth2-doctrine-identity for Laminas
License MIT
Informations about the package oauth2-doctrine-permissions-acl
ACL permissions for api-skeletons/oauth2-doctrine for Laminas
About
This provides ACL for api-skeletons/oauth2-doctrine. This replaces some components of laminas-api-tools/api-tools-mvc-auth to enable multiple roles per user and auto injecting roles into the ACL.
This library is specifically for a many to many relationship between Role and User. If you have a one to many relationship where each user may have only one role this library is not for you.
This library depends on api-skeletons/auth2-doctrine-identity. Please see that library for implementation details.
Entity Relationship Diagram created with Skipper
Installation
Installation of this module uses composer. For composer documentation, please refer to getcomposer.org.
This will be added to your application's list of modules:
Role Related Interfaces
The ERD above shows the Doctrine relationship to a Role
entity. To fetch Roles for a user the User enitity must implement ApiSkeletons\OAuth2\Doctrine\Permissions\Acl\Role\ProviderInterface
. The Role
entity must implement Laminas\Permissions\Acl\Role\RoleInterface
.
Roles may have parents. This is optional but the parent relationship is often important in ACL. To create a role hierarchy your Role entity must implement ApiSkeletons\OAuth2\Doctrine\Permissions\Acl\Role\HierarchicalInterface
. This interface also implements Laminas\Permissions\Acl\Role\RoleInterface
.
Adding Roles to the ACL
To copy roles into the ACL from your Role entity copy config/oauth2.doctrine.permisisons.acl.global.php.dist
to your application config/autoload/oauth2.doctrine.permisisons.acl.global.php
This will run at priority 1000 in the MvcAuthEvent::EVENT_AUTHORIZATION
event. If you do not want to autoload roles remove the 'role' configuration entirely.
Adding Resource Guards
With all of the above this library has set the stage to create permissions on your resources. All your roles may be loaded and you can follow the official Apigility guide: https://apigility.org/documentation/recipes/how-do-i-customize-authorization-for-a-particular-identity Be sure your listener(s) run at priority < 1000.
This is a short summary of the linked article.
Add this bootstrap to your Module:
Create your AuthorizationListener:
Overriding the IS_AUTHORIZED event
An event manager on the AclAuthorization allows you to override any ACL call. For instance if you have another entity which requires permissions based in its value you can add new Roles to your ACL manually then create an override when the authorization is checked to allow for those other entity values now proxied as roles:
All versions of oauth2-doctrine-permissions-acl with dependencies
container-interop/container-interop Version ^1.1
api-skeletons/oauth2-doctrine Version ^5.0
api-skeletons/oauth2-doctrine-identity Version ^5.0.1
gianarb/angry Version ^1.0
laminas/laminas-dependency-plugin Version ^2.0