laravel-user-management maintained by kreetancraft
Description
Complete user management for Laravel — Livewire 4 + Flux UI, Fortify 2FA/passkeys, roles & permissions, impersonation, login history.
Author
Last update
2026/08/30 13:17
(dev-main)
License
Downloads
61
Tags
Last update
2026/08/30 13:17
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/30 13:16
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 11:52
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 11:35
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 11:25
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 11:17
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 11:13
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 11:08
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 10:59
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 10:33
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 10:16
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 06:21
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 05:28
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/29 04:39
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 16:14
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 15:49
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 15:30
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 11:34
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 11:04
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 10:21
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 08:50
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 08:18
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/28 08:18
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 20:06
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 20:00
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:55
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:43
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:41
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:37
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:34
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:29
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:25
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:20
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:16
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 19:10
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 17:53
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 17:51
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
Last update
2026/08/27 17:18
License
Require
- php ^8.2
- lab404/laravel-impersonate ^1.7
- laravel/framework ^12.0|^13.0
- laravel/fortify ^1.37
- livewire/flux ^2.0
- livewire/livewire ^4.0
- lorisleiva/laravel-actions ^2.0
- sandermuller/laravel-fluent-validation ^1.33
- spatie/laravel-data ^4.0
- spatie/laravel-permission ^8.0
- spatie/laravel-query-builder ^7.0
- torann/geoip ^3.0
kreetancraft/laravel-user-management
Complete user management for Laravel — Livewire 4 + Flux UI, Laravel Fortify (2FA, passkeys, email verification), roles & permissions (spatie/laravel-permission), impersonation, and login history with GeoIP.
Standalone package — no nwidart/laravel-modules. Drops into any Laravel 12/13 app (including laravel new --using=livewire starter kit).
Flux is a hard dependency. All admin views use
<flux:*>200+ times. Consumers must havelivewire/fluxinstalled (paid).
Requirements
- PHP
^8.2, Laravel^12|^13 livewire/livewire ^4,livewire/flux ^2,laravel/fortify ^1.37spatie/laravel-permission ^8,spatie/laravel-data ^4,spatie/laravel-query-builder ^7lab404/laravel-impersonate ^1.7andtorann/geoip ^3.0are required (installed with this package)
Installation
composer require kreetancraft/laravel-user-management
php artisan vendor:publish --tag=user-management-config
php artisan vendor:publish --tag=user-management-migrations
php artisan migrate
php artisan user-management:super-admin
php artisan user-management:sync-permissions
Point auth to the package User (optional)
In config/auth.php:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => Kreetancraft\UserManagement\Models\User::class,
],
],
Or extend it in your app:
class User extends \Kreetancraft\UserManagement\Models\User {}
Features
- Users: CRUD, soft-delete, invitation flow (
/set-password/{token}with 48h expiry +throttle:6,1), active/inactive,enforce_2fa - Roles & Permissions: Livewire
ManageRoles/CreateRole/EditRole+ permission CRUD, seeded viauser-management:sync-permissions - Auth: Fortify views at
user-management::auth.*, 2FA challenge, passkeys, password reset, email verification - Login history:
user_login_historiestable,RecordUserLoginlistener with GeoIP enrichment - Impersonation:
Route::impersonate()vialab404/laravel-impersonate, super-admin only (canImpersonate/canBeImpersonated) - UI: 8 Livewire components, Flux tables/badges/modals, layouts
user-management::layouts.app/auth
Configuration
config/user-management.php (publishable):
'super_admin' => ['role' => 'super-admin'],
'features' => ['two_factor' => true, 'passkeys' => true, 'impersonation' => true, 'login_history' => true],
'routes' => ['prefix' => 'admin', 'middleware' => ['web','auth','verified','ensure.2fa.enforced']],
'views' => ['login' => 'user-management::auth.login', /* ... */],
'layouts' => ['admin' => 'user-management::layouts.app', 'auth' => 'user-management::layouts.auth'],
'invitation_expiry_hours' => 48,
All view/layout/route names are overridable so a host app can point at its own.
Commands
php artisan user-management:super-admin {--user=}— create or promote a super-admin (prohibited in production)php artisan user-management:sync-permissions— scan policy paths and upsert permissions per policy method (idempotent)
Migrations
Publish and run:
create_users_table(addsinvitation_token,invitation_sent_at,enforce_2fa,is_active,last_login_at,last_login_ip)create_permission_tables(spatie)create_passkeys_table+add_two_factor_columns_to_users_tablecreate_user_login_histories_table
The package does not re-create password_reset_tokens / sessions — those come from the Laravel skeleton.
Testing
composer install
vendor/bin/pest
License
MIT