1. Go to this page and download the library: Download jkardynia/acl-annot 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/ */
jkardynia / acl-annot example snippets
namespace Album\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use \jkardynia\Annotations\Permissions\Acl\Acl;
class AlbumController extends AbstractActionController
{
/**
* @Acl("Allow", roles="admin, guest")
*/
public function indexAction()
{
}
/**
* @Acl("Allow", roles="admin")
*/
public function addAction()
{
}
/**
* @Acl("Allow", roles="admin")
*/
public function editAction()
{
}
/**
* @Acl("Allow", roles="admin")
*/
public function deleteAction()
{
}
}
namespace Album;
use Zend\Mvc\MvcEvent;
use \jkardynia\Zend\Permissions\Acl\AclItemsCollector;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
class Module implements AutoloaderProviderInterface, ConfigProviderInterface
{
/**
* @var \Zend\Permissions\Acl\Acl
*/
private $acl = null;
public function init(\Zend\ModuleManager\ModuleManager $m){
$event = $m->getEventManager()->getSharedManager();
$event->attach('Zend\Mvc\Application', MvcEvent::EVENT_BOOTSTRAP, function (MvcEvent $e){
$collector = new AclItemsCollector();
$collector->getAcl()->addRole('guest');
$collector->getAcl()->addRole('admin', 'guest');
$collector->addEntriesFromResourceClass('Album\Controller\AlbumController');
$this->acl = $collector->getAcl();
});
}
// other stuff
}
$userRole = new \Zend\Permissions\Acl\Role\GenericRole('guest'); // you can get it from session
try{
$sm->get('ControllerPluginManager')->get('Acl', $acl)->checkAccess($event, $userRole);
}catch(AccessDeniedException $e){
$event->getTarget()->plugin('redirect')->toUrl('access-denied');
return false;
}
namespace Album;
use Zend\Mvc\MvcEvent;
use \jkardynia\Zend\Permissions\Acl\AclItemsCollector;
use Zend\ModuleManager\Feature\AutoloaderProviderInterface;
use Zend\ModuleManager\Feature\ConfigProviderInterface;
use \Zend\Permissions\Acl\Acl;
use \jkardynia\Annotations\Permissions\Acl\Parser\AclParser;
use \Doctrine\Common\Annotations\AnnotationReader;
use \Doctrine\Common\Annotations\CachedReader;
use \Doctrine\Common\Cache\FilesystemCache;
class Module implements AutoloaderProviderInterface, ConfigProviderInterface
{
/**
* @var \Zend\Permissions\Acl\Acl
*/
private $acl = null;
public function init(\Zend\ModuleManager\ModuleManager $m){
$event = $m->getEventManager()->getSharedManager();
$event->attach('Zend\Mvc\Application', MvcEvent::EVENT_BOOTSTRAP, function (MvcEvent $e){
$parser = new AclParser(new CachedReader(
new AnnotationReader(),
new FilesystemCache("/path/to/cache"),
$debug = true
));
$collector = new AclItemsCollector(new Acl(), $parser);
$collector->getAcl()->addRole('guest');
$collector->getAcl()->addRole('admin', 'guest');
$collector->addEntriesFromResourceClass('Album\Controller\AlbumController');
$this->acl = $collector->getAcl();
});
}
// other stuff
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.