1. Go to this page and download the library: Download drago-ex/permission 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/ */
drago-ex / permission example snippets
use Drago\Permission\Provider;
use Drago\Permission\Role;
use Nette\Security\Permission;
final class PermissionProvider implements Provider
{
private const string Resource = 'Backend:Sign';
public function register(Permission $acl): void
{
$acl->addResource(self::Resource);
$acl->allow(Role::RoleGuest, self::Resource);
}
}
public function register(Permission $acl): void
{
$acl->addResource(self::Resource);
$acl->allow(Role::RoleAdmin);
$acl->allow(Role::RoleUser, self::Resource, 'default');
}
use Drago\Permission\Authorization;
class BasePresenter extends Nette\Application\UI\Presenter
{
use Authorization;
}
protected function readOnlyReceivers(): array
{
return ['Grid-filters', 'Grid-paginator', 'Grid-pageSize'];
}
use Drago\Datagrid\DataGrid;
protected function isReadOnlySignal(string $receiver, string $name): bool
{
return DataGrid::isReadOnlySignal($this, $receiver, $name);
}
use Drago\Permission\Authorization;
class ArticlePresenter extends BasePresenter
{
protected function readOnlySignals(): array
{
// these signals only read data checked as "{component}-read"
return ['sort', 'page', 'resetFilters', 'setPageSize'];
}
protected function readOnlyReceivers(): array
{
// read-only DataGrid subcomponents with generic signal names
return ['Grid-filters', 'Grid-paginator', 'Grid-pageSize'];
}
}
bdump($this->getSignal());
use Drago\Permission\WriteAccess;
class ArticleControl extends Nette\Application\UI\Control
{
use WriteAccess;
}