A Laravel package for role management system, focusing on role-based access control. This package is extracted and inspired by the role functionality from Spatie's Laravel Permission package, providing a lightweight and focused solution for role management.
- Create and manage roles
- Assign roles to users
- Check user roles with various methods
- Role-based middleware
- Artisan commands for role management
- Blade directives for role checks
- Event system for role operations
- Support for multiple guards
- Enum support for roles
- Caching for performance
You can install the package via composer:
composer require litepie/rolesYou can publish and run the migrations with:
php artisan vendor:publish --tag="roles-migrations"
php artisan migrateYou can publish the config file with:
php artisan vendor:publish --tag="roles-config"This is the contents of the published config file:
<?php
return [
'models' => [
'role' => Litepie\Roles\Models\Role::class,
],
'table_names' => [
'roles' => 'roles',
'model_has_roles' => 'user_roles',
],
'column_names' => [
'role_pivot_key' => 'role_id',
'model_morph_key' => 'model_id',
],
'cache' => [
'expiration_time' => \DateInterval::createFromDateString('24 hours'),
'key' => 'litepie.roles.cache',
'store' => 'default',
],
];Add the HasRoles trait to your User model:
use Illuminate\Foundation\Auth\User as Authenticatable;
use Litepie\Roles\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
// ...
}use Litepie\Roles\Models\Role;
$role = Role::create(['name' => 'admin']);
$role = Role::create(['name' => 'editor']);$user->assignRole('admin');
$user->assignRole(['editor', 'moderator']);
$user->assignRole(Role::find(1));$user->hasRole('admin');
$user->hasAnyRole(['admin', 'editor']);
$user->hasAllRoles(['admin', 'editor']);
$user->hasExactRoles(['admin', 'editor']);$user->removeRole('admin');
$user->syncRoles(['editor', 'moderator']);Register the middleware in your app/Http/Kernel.php:
protected $routeMiddleware = [
// ...
'role' => \Litepie\Roles\Middleware\RoleMiddleware::class,
];Use it in routes:
Route::group(['middleware' => ['role:admin']], function () {
// Routes that require admin role
});@role('admin')
I am an admin!
@endrole
@hasrole('admin')
I have admin role!
@endhasrole
@hasanyrole(['admin', 'editor'])
I have at least one of these roles!
@endhasanyrole# Create a role
php artisan roles:create admin
# List all roles
php artisan roles:list
# Show role details
php artisan roles:show adminenum UserRole: string
{
case ADMIN = 'admin';
case EDITOR = 'editor';
case USER = 'user';
}
// Create role with enum
$role = Role::create(['name' => UserRole::ADMIN->value]);
// Check role with enum
$user->hasRole(UserRole::ADMIN);composer testPlease see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
- Litepie Team
- All Contributors
- Inspired by Spatie Laravel Permission
The MIT License (MIT). Please see License File for more information.