Complete User and Role management plugin for Laravilt with full RBAC (Role-Based Access Control) system and impersonation support.
- Full CRUD Operations - Create, read, update, and delete users
- Avatar Support - Optional user avatars with fallback to UI Avatars
- Email Verification - Track email verification status
- Role Assignment - Assign multiple roles to users
- Search & Filters - Filter users by role, search by name/email
- Complete RBAC - Full Role-Based Access Control system
- Permission Groups - Permissions grouped by resource
- Bulk Selection - Select all permissions for a resource
- Guard Support - Multiple auth guards support
- User Impersonation - Login as any user for debugging/support
- Session Preservation - Original session saved during impersonation
- Banner Notification - Visual indicator when impersonating
- Security Controls - Cannot impersonate self or super admins
- Multi-language - Full English and Arabic translations
- RTL Support - Right-to-left layout support for Arabic
- Translatable Labels - All fields, actions, and messages translated
- PHP 8.3+
- Laravel 12+
- Laravilt 1.0+
- Spatie Laravel Permission 6.0+
composer require laravilt/usersThe service provider is auto-discovered and will register automatically.
php artisan migratephp artisan laravilt:users:installThis command will:
- Publish configuration file
- Set up default permissions
- Create default roles (Super Admin, Admin, User)
Publish the configuration file:
php artisan vendor:publish --tag=laravilt-users-configConfigure in config/laravilt-users.php:
return [
// Default guard for permissions
'guard_name' => 'web',
// Features (opt-in)
'features' => [
'impersonation' => false, // Enable user impersonation
'avatar' => false, // Enable user avatars
'teams' => false, // Enable team support
'email_verification' => true,
],
// Navigation settings
'navigation' => [
'group' => 'Users & Roles',
'sort' => 1,
],
// Impersonation settings
'impersonation' => [
'redirect_to' => '/admin',
'leave_redirect_to' => '/admin',
],
];use Laravilt\Users\UsersPlugin;
class AdminPanelProvider extends PanelProvider
{
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
UsersPlugin::make()
->navigationGroup('Settings')
->navigationSort(10)
->avatar() // Enable avatars
->impersonation(), // Enable impersonation
]);
}
}UsersPlugin::make()
// Navigation
->navigationGroup('Custom Group') // Set navigation group
->navigationSort(5) // Set navigation order
// Features (opt-in)
->avatar() // Enable avatar feature
->impersonation() // Enable impersonation featureAdd the required traits to your User model:
use Laravilt\Users\Concerns\HasRolesAndPermissions;
use Laravilt\Users\Concerns\HasAvatar;
class User extends Authenticatable
{
use HasRolesAndPermissions;
use HasAvatar; // Optional, for avatar support
// For impersonation support
public function canImpersonate(): bool
{
return $this->hasRole('super_admin');
}
public function canBeImpersonated(): bool
{
return !$this->hasRole('super_admin');
}
}Run the setup command to create permissions for all resources:
php artisan laravilt:secureThis creates permissions like:
view_any_user,view_user,create_user,update_user,delete_userview_any_role,view_role,create_role,update_role,delete_role
UsersPlugin::make()->impersonation()Add the impersonation banner middleware to your panel:
use Laravilt\Users\Http\Middleware\ImpersonationBanner;
$panel->middleware([
ImpersonationBanner::class,
]);Users can stop impersonation via:
- The banner "Stop Impersonation" button
- Route:
GET /admin/impersonation/leave
Manages users with:
- Avatar (optional)
- Name and Email
- Password management
- Role assignment
- Email verification status
- Created/Updated timestamps
Manages roles with:
- Role name
- Guard name
- Permission assignment (grouped by resource)
- User count
All strings are translatable. Translation files are located in:
lang/en/users.php- English translationslang/ar/users.php- Arabic translations
Comprehensive documentation is available in the docs/ directory:
composer testcomposer formatcomposer analysePlease see CONTRIBUTING.md for details.
If you discover any security-related issues, please email info@3x1.io instead of using the issue tracker.
Please see CHANGELOG.md for recent changes.
The MIT License (MIT). Please see License File for more information.
- Fady Mondy
- Spatie for Laravel Permission
- All Contributors
Support this project via GitHub Sponsors.
