PHP code example of oltrematica / laravel-role-lite
1. Go to this page and download the library: Download oltrematica/laravel-role-lite 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/ */
'model_names' => [
// Leave null to auto-detect from auth.providers.users.model
'user' => null,
],
'permissions' => [
'cache_ttl' => 3600, // seconds; set to 0 to disable caching
'cache_prefix' => 'role_lite', // prefix for all cache keys
'default_actions' => [ // used by Permission::createForModel()
'view_any', 'view', 'create', 'update', 'delete',
'restore', 'force_delete', 'delete_any', 'force_delete_any', 'restore_any',
],
],
use Oltrematica\RoleLite\Trait\HasRoles;
class User extends Authenticatable
{
use HasRoles;
}
enum Role: string
{
case ADMIN = 'admin';
case EDITOR = 'editor';
case MODERATOR = 'moderator';
}
// Assign a single role (string or BackedEnum)
$user->assignRole('admin');
$user->assignRole(Role::ADMIN);
// Sync replaces all current roles with the given set
$user->syncRoles('editor', 'moderator');
$user->syncRoles(Role::EDITOR, Role::MODERATOR);
// Remove a role
$user->removeRole('editor');
$user->removeRole(Role::EDITOR);
// Exact match
$user->hasRole('admin');
$user->hasRole(Role::ADMIN);
// Has all of the given roles
$user->hasRoles('admin', 'editor');
$user->hasRoles(Role::ADMIN, Role::EDITOR);
// Has at least one of the given roles
$user->hasAnyRoles('admin', 'editor');
$user->hasAnyRoles(Role::ADMIN, Role::EDITOR);
// Convenience checks
$user->hasSomeRoles(); // true if user has at least one role
$user->hasNoRoles(); // true if user has no roles
use Oltrematica\RoleLite\Trait\HasRoles;
use Oltrematica\RoleLite\Trait\HasPermissions;
class User extends Authenticatable
{
use HasRoles, HasPermissions;
}
use Oltrematica\RoleLite\Models\Permission;
// Create a permission with an arbitrary name
Permission::create(['name' => 'publish_posts']);
// Create (or find) a structured permission for a model class and action
// Name format: snake_case(ClassName).action → e.g. "blog_post.create"
$permission = Permission::findOrCreateForModel(BlogPost::class, 'create');
$permission = Permission::findOrCreateForModel(BlogPost::class, 'create', 'Can create blog posts');
// Create the full default action set for a model in one call
// Produces: blog_post.view_any, blog_post.view, blog_post.create, blog_post.update, etc.
$permissions = Permission::createForModel(BlogPost::class);
// Pass a custom action list
$permissions = Permission::createForModel(BlogPost::class, ['view', 'create', 'update']);
use Oltrematica\RoleLite\Models\Role;
use Oltrematica\RoleLite\Models\Permission;
$role = Role::where('name', 'editor')->first();
$permission = Permission::where('name', 'blog_post.create')->first();
$role->grantPermission($permission);
$role->revokePermission($permission);
// Replace all permissions for a role at once
$role->syncPermissions([$permissionA->id, $permissionB->id]);
// Grant through the user's first role
$user->givePermissionTo('publish_posts');
$user->givePermissionTo(PostPermission::PUBLISH);
// Grant through a specific role
$editorRole = Role::where('name', 'editor')->first();
$user->givePermissionTo('publish_posts', $editorRole);
// Revoke
$user->revokePermissionTo('publish_posts');
$user->revokePermissionTo('publish_posts', $editorRole);
// Single permission
$user->hasPermissionTo('blog_post.create');
$user->hasPermissionTo(PostPermission::CREATE);
// Any of the given permissions
$user->hasAnyPermission('blog_post.view', 'blog_post.create');
// All of the given permissions
$user->hasAllPermissions('blog_post.view', 'blog_post.create');
// Model + action shorthand (builds "blog_post.create" internally)
$user->canDo(BlogPost::class, 'create');
// Retrieve all permissions granted to the user (across all their roles)
$permissions = $user->getAllPermissions();
use Oltrematica\RoleLite\Trait\ChecksPermissions;
class CustomerPolicy
{
use ChecksPermissions;
public function viewAny(User $user): bool
{
return $this->checkPermission($user, 'view_any');
// checks: customer.view_any
}
public function create(User $user): bool
{
return $this->checkPermission($user, 'create');
// checks: customer.create
}
}
public function viewAny(User $user): bool
{
return $this->checkPermission($user, 'view_any', Customer::class);
}