2017 © Pedro Peláez
 

symfony-bundle acl-manager-bundle

ACL Manager for Symfony2

image

nuxia/acl-manager-bundle

ACL Manager for Symfony2

  • Monday, March 16, 2015
  • by Nuxia
  • Repository
  • 7 Watchers
  • 3 Stars
  • 121 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 35 Forks
  • 0 Open issues
  • 18 Versions
  • 0 % Grown

The README.md

Installation

Add this bundle to your composer.json file:, (*1)

{
    "require": {
        "nuxia/acl-manager-bundle": "*"
    }
}

Register the bundle in app/AppKernel.php:, (*2)

<?php

// app/AppKernel.php
public function registerBundles()
{
    return array(
        // ...
        new Problematic\AclManagerBundle\ProblematicAclManagerBundle(),
    );
}

If you haven't configured the ACL enable it in app/config/security.yml:, (*3)

# app/config/security.yml
security:
    acl:
        connection: default

Finally run the ACL init command, (*4)

php app/console init:acl

Usage

<?php

$comment = new Comment(); // create some entity
// ... do work on entity

$em->persist($comment);
$em->flush(); // entity must be persisted and flushed before AclManager can act on it (needs identifier)
$aclManager = $this->get('problematic.acl_manager');

// Adds a permission no matter what other permissions existed before
$aclManager->addObjectPermission($comment, MaskBuilder::MASK_OWNER, $userEntity);
// Or:
$aclManager->addObjectPermission($comment, MaskBuilder::MASK_OWNER);
// Replaces all current permissions with this new one
$aclManager->setObjectPermission($comment, MaskBuilder::MASK_OWNER, $userEntity);
$aclManager->revokePermission($comment, MaskBUILDER::MASK_DELETE, $userEntity);
$aclManager->revokeAllObjectPermissions($comment, $userEntity);

// Same with class permissions:
$aclManager->addClassPermission($comment, MaskBuilder::MASK_OWNER, $userEntity);
//Or:
$aclManager->addClassPermission(Comment::CLASS, MaskBuilder::MASK_OWNER, $userEntity);
//Or:
$aclManager->addClassPermission('Acme\\Bundle\\Entity\\Comment', MaskBuilder::MASK_OWNER, $userEntity);
$aclManager->setClassPermission($comment, MaskBuilder::MASK_OWNER, $userEntity);
$aclManager->revokePermission($comment, MaskBUILDER::MASK_DELETE, $userEntity, 'class');
$aclManager->revokeAllClassPermissions($comment, $userEntity);

// You can alse use object-field...
$aclManager->addObjectFieldPermission($comment, 'title', MaskBuilder:MASK_EDIT, $userEntity);
$aclManager->setObjectFieldPermission($comment, 'title', MaskBuilder:MASK_EDIT, $userEntity);
$aclManager->revokeFieldPermission($comment,, 'title' MaskBUILDER::MASK_DELETE, $userEntity);
$aclManager->revokeAllObjectFieldPermissions($comment, 'title', $userEntity);
// ...and class-field scope permissions :
$aclManager->addClassFieldPermission($comment, 'title', MaskBuilder:MASK_EDIT, $userEntity);
$aclManager->setClassFieldPermission($comment, 'title', MaskBuilder:MASK_EDIT, $userEntity);
$aclManager->revokeFieldPermission($comment,, 'title' MaskBUILDER::MASK_DELETE, $userEntity, 'class');
$aclManager->revokeAllClassFieldPermissions($comment, 'title', $userEntity);

$aclManager->deleteAclFor($comment);
$em->remove($comment);
$em->flush();

If no $userEntity is provided, the current session user will be used instead., (*5)

If you'll be doing work on a lot of entities, use AclManager#preloadAcls():, (*6)

<?php

$products = $repo->findAll();

$aclManager = $this->get('problematic.acl_manager');
$aclManager->preloadAcls($products);

// ... carry on

ACL ORM Filter

If you are using Doctrine ORM, you can use our filter to directly retrieve granted rows., (*7)

//Repository class
$qb = $this->getEntityManager()->createQueryBuilder();
$qb
    ->select('client_alias', 'client_user_alias')
    ->from($this->getEntityName(), 'client_alias')
    ->leftJoin('client_alias.user', 'client_user_alias')
;

$query = $this->aclFilter->apply($qb, ['VIEW', 'EDIT'], $currentUser, 'client_alias');
return $query->getResult();
//Will return only rows where $currentUser is granted VIEW,EDIT on Client (retrieved form table alias client_alias)

You can add extra criteria., (*8)

$query = $this->aclFilter->apply($query, ['OPERATOR'], $user, 'client_alias', function(ExtraAclCriteria $criteria){
$criteria->setExpression(sprintf('OR %s.status = ?', $criteria->getSQLTableAlias('user_table_name', 'client_user_alias')));
    $criteria->setParameters([User::STATUS_INACTIVE]);
});

The Versions

16/03 2015

dev-master

9999999-dev https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

04/03 2015

v2.0.2

2.0.2.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

04/03 2015

v2.0.1

2.0.1.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

03/03 2015

v2.0.0

2.0.0.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

23/02 2015

v1.3.4

1.3.4.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

09/02 2015

v1.3.3

1.3.3.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

03/02 2015

dev-ProPheT777-patch-1

dev-ProPheT777-patch-1 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

21/01 2015

v1.3.2

1.3.2.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

06/01 2015

dev-improve-acl-filter

dev-improve-acl-filter https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

18/12 2014

v1.3.1

1.3.1.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

18/12 2014

v1.3.0

1.3.0.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

18/12 2014

dev-transactionalize-acl-updating

dev-transactionalize-acl-updating https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

18/12 2014

v1.2.1

1.2.1.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

18/12 2014

dev-path-1

dev-path-1 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

12/12 2014

v1.2.0

1.2.0.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

The Development Requires

by Derek Stobbe
by Avatar Nuxia

acl

12/12 2014

v1.1.0

1.1.0.0 https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

by Derek Stobbe
by Avatar Nuxia

acl

12/12 2014

dev-orm-filter

dev-orm-filter https://github.com/nuxia/AclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

by Derek Stobbe
by Avatar Nuxia

acl

14/11 2014

v1.0.0

1.0.0.0 https://github.com/GeniusesOfSymfony/ProblematicAclManagerBundle

ACL Manager for Symfony2

  Sources   Download

MIT

The Requires

 

by Johann Saunier
by Derek Stobbe

acl management