1. Go to this page and download the library: Download yiisoft/rbac 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/ */
yiisoft / rbac example snippets
use Yiisoft\Rbac\AssignmentsStorageInterface;
use Yiisoft\Rbac\ItemsStorageInterface;
use Yiisoft\Rbac\RuleFactoryInterface;
/**
* @var ItemsStorageInterface $itemsStorage
* @var AssignmentsStorageInterface $assignmentsStorage
* @var RuleFactoryInterface $ruleFactory
*/
$manager = new Manager($itemsStorage, $assignmentsStorage, $ruleFactory);
use Yiisoft\Rbac\ManagerInterface;
use Yiisoft\Rbac\Permission;
/** @var ManagerInterface $manager */
$manager->addPermission(new Permission('createPost'));
$manager->addPermission(new Permission('readPost'));
$manager->addPermission(new Permission('deletePost'));
use Yiisoft\Rbac\ManagerInterface;
use Yiisoft\Rbac\Role;
/** @var ManagerInterface $manager */
$manager->addRole(new Role('author'));
$manager->addRole(new Role('reader'));
use Yiisoft\Rbac\Item;
use Yiisoft\Rbac\RuleContext;
use Yiisoft\Rbac\RuleInterface;
class ActionRule implements RuleInterface
{
public function execute(?string $userId, Item $item, RuleContext $context): bool;
{
return $context->getParameterValue('action') === 'home';
}
}
use Yiisoft\Rbac\ManagerInterface;
use Yiisoft\Rbac\Permission;
/** @var ManagerInterface $manager */
$manager->addPermission(
(new Permission('viewList'))->withRuleName(ActionRule::class),
);
// or
$manager->addRole(
(new Role('NewYearMaintainer'))->withRuleName(NewYearOnlyRule::class)
);
use Yiisoft\Rbac\CompositeRule;
// Fresh and owned
$compositeRule = new CompositeRule(CompositeRule::AND, [FreshRule::class, OwnedRule::class]);
// Fresh or owned
$compositeRule = new CompositeRule(CompositeRule::OR, [FreshRule::class, OwnedRule::class]);
use Psr\Http\Message\ResponseInterface;
use Yiisoft\Access\AccessCheckerInterface;
public function actionCreate(AccessCheckerInterface $accessChecker): ResponseInterface
{
$userId = getUserId();
if ($accessChecker->userHasPermission($userId, 'createPost')) {
// author has permission to create post
}
}
use Yiisoft\Access\AccessCheckerInterface;
use Yiisoft\Rbac\Permission;
use Yiisoft\Rbac\Role;
/**
* @var ManagerInterface $manager
* @var AccessCheckerInterface $accessChecker
*/
$manager->setGuestRoleName('guest');
$manager->addPermission(new Permission('signup'));
$manager->addRole(new Role('guest'));
$manager->addChild('guest', 'signup');
$guestId = null;
if ($accessChecker->userHasPermission($guestId, 'signup')) {
// Guest has "signup" permission.
}