1. Go to this page and download the library: Download perer876/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/ */
perer876 / permission example snippets
declare(strict_types=1);
namespace App\Permissions;
use Guard\Role;
enum UserRole: string implements Role
{
case Admin = 'admin';
case User = 'user';
case Guest = 'guest';
}
declare(strict_types=1);
namespace App\Permissions;
use Guard\GrantTo;
use Guard\Permission;
#[GrantTo(UserRole::Admin)] // <- Top level: It's granted to all permissions
enum TodoPermission implements Permission
{
#[GrantTo(UserRole::Member)] // <- Fine-grained: It's granted to this specific permission
case ViewAny;
#[GrantTo(UserRole::Member, UserRole::Viewer)] // <- Multiple roles can be granted
case View;
#[GrantTo(UserRole::Member)]
#[GrantTo(UserRole::Editor)]
case Create;
#[GrantTo(UserRole::Member, UserRole::Editor)]
case Update;
case Delete;
}
declare(strict_types=1);
namespace App\Models;
use App\Permissions\UserRole;
use Guard\AsSubject;
use Guard\Subject;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Override;
final class User extends Authenticatable implements Subject
{
use AsSubject;
/** @return iterable<UserRole> */
#[Override]
public function getRoles(): iterable
{
yield $this->role;
}
/** @return array<string, string> */
protected function casts(): array
{
return [
'role' => UserRole::class,
];
}
/* ... */
}
$user->hasPermission(TodoPermission::ViewAny);
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.