PHP code example of curiosity26 / acl-helper-bundle
1. Go to this page and download the library: Download curiosity26/acl-helper-bundle library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
curiosity26 / acl-helper-bundle example snippets
namespace App\Controller;
use Curiosity26\AclHelperBundle\Helper\AclHelper;
use Curiosity26\AclHelperBundle\Tests\Entity\TestObject;
use Symfony\Component\Security\Acl\Permission\BasicPermissionMap;
class MyController extends FOSRestController implements ClassResourceInterface {
/**
* @var AclHelper
*/
private $aclHelper;
public function __construct(AclHelper $aclHelper)
{
$this->aclHelper = $aclHelper;
}
/**
* @Rest\View()
* @return TestObject[]
*/
public function cgetAction()
{
// Get all of the TestObjects this user can view
$agent = $this->aclHelper->createAgent(TestObject::class);
$permMap = new BasicPermissionMap();
$builder = $permMap->getMaskBuilder();
$masks = $permMap->getMasks('VIEW', null);
foreach ($masks as $mask) {
$builder->add($mask);
}
return $agent->findAll($builder->get(), $this->getUser());
}
}
namespace App\Controller;
use Curiosity26\AclHelperBundle\Helper\AclHelper;
use Curiosity26\AclHelperBundle\Tests\Entity\TestObject;
use Symfony\Component\Security\Acl\Domain\UserSecurityIdentity;
use Symfony\Component\Security\Acl\Domain\RoleSecurityIdentity;
use Symfony\Component\Security\Acl\Permission\MaskBuilder;
class MyController extends FOSRestController implements ClassResourceInterface {
/**
* @var AclHelper
*/
private $aclHelper;
public function __construct(AclHelper $aclHelper)
{
$this->aclHelper = $aclHelper;
}
public function postAction(TestObject $object)
{
$manager = $this->getDoctrine()->getManager();
$manager->persist($object);
$aclManager = $this->aclHelper->createAclManager();
// The current user needs to be the owner
// The ROLE_ADMIN must have view, edit, delete permissions
// ROLE_USER users should be able to view
$aclManager->aclFor($object)
->insertObjectAce(UserSecurityIdentity::fromAccount($this->getUser()), MaskBuilder::MASK_OWNER)
->insertObjectAce(
new RoleSecurityIdentity('ROLE_ADMIN'),
MaskBuilder::MASK_VIEW | MaskBuilder::MASK_EDIT | MaskBuilder::MASK_DELETE
)
->insertObjectAce(new RoleSecurityIdentity('ROLE_USER'), MaskBuilder::MASK_VIEW)
->save()
;
return $this->view(null, 201);
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.