# Roles & Permissions
Estimated time: 8 minutes
Difficulty: Intermediate
LaraCoreKit uses Spatie Laravel Permission for role-based access control (RBAC), pre-configured and seeded with sensible defaults.
Default Roles
| Role | Description |
|---|---|
super-admin |
Full access to everything |
admin |
Access to admin panel |
editor |
Can manage blog content |
user |
Standard registered user |
Default Permissions
| Permission | Description |
|---|---|
view users |
List all users |
edit users |
Update user profiles |
delete users |
Remove users |
manage posts |
Full blog post access |
manage settings |
Change site configuration |
Assigning Roles
// Assign a single role
$user->assignRole('editor');
// Assign multiple roles
$user->assignRole('editor', 'user');
// Sync roles (removes old ones)
$user->syncRoles(['editor', 'user']);
// Remove a role
$user->removeRole('editor');
Checking Roles & Permissions
// Check role
$user->hasRole('admin');
$user->hasAnyRole(['admin', 'super-admin']);
$user->hasAllRoles(['admin', 'editor']);
// Check permission
$user->can('edit posts');
$user->hasPermissionTo('delete users');
// Via Gate facade
Gate::allows('manage posts');
In Blade Templates
@role('admin')
<a href="/admin">Admin Panel</a>
@endrole
@can('edit posts')
<a href="/posts/edit">Edit Post</a>
@endcan
@hasanyrole('admin|editor')
{{-- Admin or editor content --}}
@endhasanyrole
In Middleware
// In routes
Route::middleware(['role:admin'])->group(function () {
Route::get('/admin', AdminDashboard::class);
});
Route::middleware(['permission:manage posts'])->group(function () {
Route::get('/posts/create', CreatePost::class);
});
Creating Custom Roles
Via Seeder:
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
// Create role
$role = Role::create(['name' => 'moderator']);
// Create permission
$permission = Permission::create(['name' => 'moderate comments']);
// Assign permission to role
$role->givePermissionTo('moderate comments');
Admin Panel
Manage roles and permissions from the Filament admin:
/admin/roles— Create, edit, delete roles/admin/users— Assign roles to users