ezsystems/ezpublish-kernel
eZ Publish Kernel is the core of the eZ Publish/eZ Platform CMS, providing the content repository, field types, search integration, and services for building and extending PHP-based content applications with a modular, API-driven architecture.
Added in 6.0 / 2015.09
eZ content repository uses the concept of roles and policies in order to authorize a user to do something (e.g. read content).
content/read, content being the module
and read being the function).It is possible for any bundle to expose available policies via a PolicyProvider which can be added to EzPublishCoreBundle's DIC extension.
A PolicyProvider is an object providing a hash containing declared modules, functions and limitations.
Policies configuration hash contains declared these modules, functions and limitations. First level key is the module name, value is a hash of available functions, with function name as key. Function value is an array of available limitations, identified by the alias declared in LimitationType service tag. If no limitation is provided, value can be null or an empty array.
[
"content" => [
"read" => ["Class", "ParentClass", "Node", "Language"],
"edit" => ["Class", "ParentClass", "Language"]
],
"custom_module" => [
"custom_function_1" => null,
"custom_function_2" => ["CustomLimitation"]
],
]
Limitations need to be implemented as limitation types and declared as services identified with
ezpublish.limitationTypetag. Name provided in the hash for each limitation is the same value set inaliasattribute in the service tag.
namespace Acme\FooBundle\AcmeFooBundle\Security;
use eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Configuration\ConfigBuilderInterface;
use eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Security\PolicyProvider\PolicyProviderInterface;
class MyPolicyProvider implements PolicyProviderInterface
{
public function addPolicies(ConfigBuilderInterface $configBuilder)
{
$configBuilder->addConfig([
"custom_module" => [
"custom_function_1" => null,
"custom_function_2" => ["CustomLimitation"],
],
]);
}
}
An abstract class based on YAML is provided: eZ\Bundle\EzPublishCoreBundle\DependencyInjection\Security\PolicyProvider\YamlPolicyProvider.
It defines an abstract getFiles() method. Implement it to return absolute paths to your YAML files.
A PolicyProvider may provide new functions to a module, and additional limitations to an existing function. It is however strongly encouraged to add functions to your own policy modules.
Note that it is not possible to remove an existing module, function or limitation.
A bundle just has to to retrieve CoreBundle's DIC extension and call addPolicyProvider().
This must be done in bundle's build() method.
namespace Acme\FooBundle\AcmeFooBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class AcmeFooBundle extends Bundle
{
public function build(ContainerBuilder $container)
{
parent::build($container);
$eZExtension = $container->getExtension('ezpublish');
$eZExtension->addPolicyProvider(new MyPolicyProvider());
}
}
Policies used internally in repository services are defined in eZ/Publish/Core/settings/policies.yml.
How can I help you explore Laravel packages today?