1. Go to this page and download the library: Download edweld/aclbundle 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/ */
edweld / aclbundle example snippets
// app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new Edweld\AclBundle\EdweldAclBundle(),
);
}
// AppBundle/FooController.php
use Edweld\AclBundle\Entity\Actions;
$this->getService('edweld_acl.acl')->isAllowed($this->getUser(), Actions::DELETE, $object);
namespace AppBundle\Entity;
use Edweld\AclBundle\Entity\Role;
use Edweld\AclBundle\Entity\Actions;
use Edweld\AclBundle\ACL;
use AppBundle\Entity\Circle;
use AppBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(readOnly=true)
*/
class CircleEditorRole extends Role
{
/**
* @ORM\ManyToOne(targetEntity="AppBundle\Entity\Circle", inversedBy="objectRoles")
*/
protected $circleObject;
public function __construct(User $user, Circle $circleObject)
{
$this->circleObject = $circleObject;
parent::__construct($user);
}
public function createAuthorizations(ACL $acl)
{
$acl->allow(
$this,
new Actions([
Actions::VIEW,
Actions::CREATE,
Actions::EDIT,
]),
$this->circleObject
);
}
}
use AppBundle\Entity\CircleEditorRole;
$this->getService('edweld_acl.acl')->grant($this->getUser(), new CircleEditorRole($this->getUser(), $circleEntity));
namespace AppBundle\Service;
use Edweld\AclBundle\Model\ContainerTrait;
use AppBundle\Role\EventEditorRole;
use AppBundle\Role\EventViewerRole;
use AppBundle\Role\UserViewerRole;
use AppBundle\Role\CircleViewerRole;
use Edweld\AclBundle\Entity\Actions;
/**
*
* @author Ed Weld <[email protected]>
*/
class AclService {
use ContainerTrait;
public function getAcl()
{
return $this->getService('edweld_acl_service');
}
public function isAllowed($action, $object)
{
switch($action)
{
case 'delete' :
return $this->getService('edweld_acl_service')->isAllowed($this->getUser(), Actions::DELETE, $object);
break;
case 'edit' :
return $this->getService('edweld_acl_service')->isAllowed($this->getUser(), Actions::EDIT, $object);
break;
case "view":
var_dump('IS VIEW');
return $this->getService('edweld_acl_service')->isAllowed($this->getUser(), Actions::VIEW, $object);
break;
}
}
/**
* Adds users from a specific circle to view an event
*/
public function addAclCircleToEvent($event, $circle)
{
$users = $circle->getUsers();
$owner = $this->getUser();
$this->getService('edweld_acl_service')->grant($owner, new EventEditorRole($owner, $event));
foreach($users as $user){
$this->getService('edweld_acl_service')->grant($user, new EventViewerRole($user, $event));
}
}
/**
* Adds new user to user view permissions of a circle
* And adds user to all circle events
*/
public function addAclUserToCircle($userObject, $circle)
{
$users = $circle->getUsers();
foreach($users as $user){
$this->getService('edweld_acl_service')->grant($user, new UserViewerRole($user, $userObject));
$this->getService('edweld_acl_service')->grant($userObject, new UserViewerRole($userObject, $user));
}
foreach($circle->getEvents() as $event)
{
$this->getService('edweld_acl_service')->grant($userObject, new EventViewerRole($userObject, $event));
}
$this->getService('edweld_acl_service')->grant($userObject, new CircleViewerRole($userObject, $circle));
}
/*
* Allow all user's circle users to view an event
*/
public function addAclAllCirclesToEvent($event)
{
$owner = $this->getUser();
$this->getService('edweld_acl_service')->grant($owner, new EventEditorRole($owner, $event));
foreach($owner->getCircles() as $circle)
{
foreach($circle->getUsers() as $user)
{
$this->getService('edweld_acl_service')->grant($user, new EventViewerRole($user, $event));
}
}
}
/*
* Allow a specific list of users to view an event
*/
public function addAclUserArrayToEvent($event, $users){
$owner = $this->getUser();
$this->getService('edweld_acl_service')->grant($user, new EventEditorRole($user, $event));
foreach($users as $user)
{
$this->getService('edweld_acl_service')->grant($user, new EventViewerRole($user, $event));
}
}
public function removeUserFromCircle($user, $circle)
{
}
public function removeCircle($circle)
{
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.