1. Go to this page and download the library: Download matiosfree/l-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/ */
matiosfree / l-rbac example snippets
MatiosFree\LRbac\RbacServiceProvider::class,
namespace App\Classes;
use App\Classes\Rules\OwnPostRule;
use App\Classes\Rules\RoleRule;
use MatiosFree\LRbac\RbacAuthorization;
class Authorization extends RbacAuthorization {
public function getDefaultRoles(): array {
return ['user', 'manager'];
}
public function getRoles(): array {
return [
'manager' => [
'description' => 'Manager Role', // optional property
'ruleName' => RoleRule::class, // optional property that contains the rule for the role\action
'children' => [ //optional property that contains chaining rules
'updatePost',
'deletePost',
]
],
'user' => [
'description' => 'User Role',
'ruleName' => RoleRule::class,
'children' => [
'updateOwnPost'
]
],
];
}
public function getPermissions(): array {
return [
'updatePost' => [
'description' => 'Edit any posts'
],
'updateOwnPost' => [
'description' => 'Edit own post',
'ruleName' => OwnPostRule::class,
'children' => [
'updatePost' //updateOwnPost is part of updatePost action
],
],
'deletePost' => [
'description' => 'Delete any posts'
],
];
}
}
namespace App\Classes\Rules;
use MatiosFree\LRbac\Contracts\IRbacRuleContract;
class RoleRule implements IRbacRuleContract {
public function execute($user, $item, $arguments): bool {
return $user->role === $item->getName();
}
}
namespace App\Classes\Rules;
use MatiosFree\LRbac\Contracts\IRbacRuleContract;
class OwnPostRule implements IRbacRuleContract {
public function execute($user, $item, $arguments): bool {
return $user->id === $arguments['post']->author_id;
}
}
if (Gate::allows('updatePost', ['post' => $post])) {
// The current user can update the post...
}
if (Gate::denies('updatePost', ['post' => $post])) {
// The current user can't update the post...
}
if (Gate::forUser($user)->allows('updatePost', ['post' => $post])) {
// The user can update the post...
}
//In user model
if ($request->user()->can('updatePost', ['post' => $post])) {
// The current user can update the post...
}
if ($request->user()->cannot('updatePost', ['post' => $post])) {
// The current user can't update the post...
}
//In controller:
$this->authorize('updatePost', ['post' => $post]);
// In blade templates
@can('updatePost', ['post' => $post])
<!-- // The current user can update the post... -->
@else
<!-- The current user can't update the post... -->
@endcan
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.