Skip to content

Commit

Permalink
aclserviceprovider
Browse files Browse the repository at this point in the history
  • Loading branch information
mparaiso committed Mar 24, 2013
1 parent e3804cf commit 4b5d3df
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 17 deletions.
5 changes: 4 additions & 1 deletion README.md
Expand Up @@ -2,4 +2,7 @@ AclServiceProvider
==================

author : M.Paraiso
contact: mparaiso@online.fr

contact: mparaiso@online.fr

status : work in progress
3 changes: 2 additions & 1 deletion composer.json
Expand Up @@ -22,7 +22,8 @@
"php": ">=5.3.3",
"doctrine/dbal": "2.3.*",
"symfony/security": "2.2.*",
"symfony/console":"2.2.*"
"symfony/console":"2.2.*",
"mparaiso/consoleserviceprovider":"*@dev"
},
"suggest": {},
"autoload": {
Expand Down
43 changes: 28 additions & 15 deletions src/Mparaiso/Provider/AclServiceProvider.php
@@ -1,16 +1,19 @@
<?php
namespace Mparaiso\Provider;
use Silex\ServiceProviderInterface;
use Mparaiso\Command\InitAclCommand;
use Symfony\Component\Security\Acl\Permission\BasicPermissionMap;
use Symfony\Component\Security\Acl\Dbal\Schema;
use Symfony\Component\Security\Acl\Dbal\AclProvider;
use Symfony\Component\Security\Acl\Voter\AclVoter;
use Symfony\Component\Security\Acl\Domain\PermissionGrantingStrategy;
use Symfony\Component\Security\Acl\Domain\SecurityIdentityRetrievalStrategy;
use Symfony\Component\Security\Acl\Domain\ObjectIdentityRetrievalStrategy;

#use Symfony\Component\Security\Acl\Domain\AclCollectionCache;
use Symfony\Component\Security\Acl\Domain\DoctrineAclCache;
use Silex\Application;
use Mparaiso\Provider\ConsoleServiceProvider;

/**
* @author M.Paraiso
Expand All @@ -25,55 +28,65 @@ class AclServiceProvider implements ServiceProviderInterface
*/
public function register(Application $app)
{
$app["security.acl.dbal.provider.options"] = array(
$app["security.acl.dbal.provider.options"] = array(
"class_table_name" => "acl_classes",
"entry_table_name" => "acl_entries",
"oid_table_name" => "acl_object_identities",
"oid_ancestors_table_name" => "acl_object_identity_ancestors",
"sid_table_name" => "acl_security_identities"
);
$app["security.acl.object_identity_retrieval_strategy"] = $app->share(function ($app) {
$app["security.acl.object_identity_retrieval_strategy"] = $app->share(function ($app) {
return new ObjectIdentityRetrievalStrategy();
});
$app["security.acl.security_identity_retrieval_strategy"] = $app->share(function ($app) {
return new SecurityIdentityRetrievalStrategy($app["security.role_hierarchy"], $app["security.authentication.trust_resolver"]);
});
$app["security.acl.permission_granting_strategy"] = $app->share(function ($app) {
$app["security.acl.permission_granting_strategy"] = $app->share(function ($app) {
$service = new PermissionGrantingStrategy();
$service->setAuditLogger($app["security.acl.audit_logger"]);
return $service;
});
$app["security.acl.permission.map"] = $app->share(function ($app) {
$app["security.acl.permission.map"] = $app->share(function ($app) {
return new AclVoter($app["security.acl.provider"], $app["security.acl.object_identity_retrieval_strategy"], $app['security.acl.security_identity_retrieval_strategy'], $app['security.acl.permission.map'], $app["logger"]);
});

$app["security.acl.dbal.connection"] = $app->share(function ($app) {
$app["security.acl.dbal.connection"] = $app->share(function ($app) {
return $app["db"];
});
$app["security.acl.dbal.provider"] = $app->share(function ($app) {
$app["security.acl.dbal.provider"] = $app->share(function ($app) {
return new AclProvider($app["security.acl.dbal.connection"], $app["security.acl.permission_granting_strategy"], $app["security.acl.dbal.provider.options"], $app["security.acl.cache"]);
});
$app['security.acl.dbal.schema'] = $app->share(function ($app) {
$app['security.acl.dbal.schema'] = $app->share(function ($app) {
return new Schema($app["security.acl.dbal.provider.options"], $app["security.acl.dbal.connection"]);
});
$app["security.acl.dbal.schema_listener"] = $app->share(function ($app) {
return new AclSchemaListener($app);
});

$app["security.acl.provider"] = $app->share(function($app){
return $app["security.acl.dbal.provider"];
$app["security.acl.provider"] = $app->share(function ($app) {
return $app["security.acl.dbal.provider"];
});

$app["security.acl.cache.doctrine"] = $app->share(function($app){
return new DoctrineAclCache($app['security.acl.cache.doctrine.cache_impl'],$app['security.acl.permission_granting_strategy']);
$app["security.acl.cache.doctrine"] = $app->share(function ($app) {
return new DoctrineAclCache($app['security.acl.cache.doctrine.cache_impl'], $app['security.acl.permission_granting_strategy']);
});

$app["security.acl.cache.doctrine.cache_impl"]=$app->share(function($app){
return $app['"doctrine.orm.default_result_cache"'];
$app["security.acl.cache.doctrine.cache_impl"] = $app->share(function ($app) {
return $app['"doctrine.orm.default_result_cache"'];
});
$app["security.acl.permission.map"] = $app->share(function ($app) {
return new BasicPermissionMap();
});
$app["security.acl.permission.map"] = $app->share(function($app){
return new BasicPermissionMap();

// FR : ajouter la command InitAcl
// EN : add InitAclCommand
$app->on(ConsoleServiceProvider::INIT, function () use ($app) {
/* @var $console \Symfony\Component\Console\Application */
$app["console"]->add(new InitAclCommand);
return $console;
});


}

/**
Expand Down

0 comments on commit 4b5d3df

Please sign in to comment.