Laravel Users Management to Laravel 8 Jetstream (Using Spatie/LaravelPermissions & Lab404/LaravelImpersonate).
| Functionality | Working | Test | 
|---|---|---|
| User - Index | ✓ | ⨯ | 
| User - Edit Roles | ✓ | ⨯ | 
| Role - Index | ✓ | ⨯ | 
| Role - Edit Permissions | ✓ | ⨯ | 
| Role - Create | ✓ | ⨯ | 
| Permission - Index | ✓ | ⨯ | 
| Permission - Create | ✓ | ⨯ | 
| Blade @lumki | ✓ | ⨯ | 
| Command to Setup | ✓ | ⨯ | 
✓/⨯
Via Composer
$ composer require kineticamobile/lumki$ php artisan lumki:setup$ php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"$ php artisan vendor:publish --tag=impersonateLumki::insertLineAfter(
    app_path("Models/User.php"),
    "use Laravel\Jetstream\HasProfilePhoto;",
    "use Spatie\Permission\Traits\HasRoles;"
);Lumki::insertLineAfter(
    app_path("Models/User.php"),
    "use HasProfilePhoto;",
    "use HasRoles;"
);Lumki::insertLineAfter(
    app_path("Models/User.php"),
    "use Spatie\Permission\Traits\HasRoles;",
    "use Lab404\Impersonate\Models\Impersonate;"
);Lumki::insertLineAfter(
    app_path("Models/User.php"),
    "use HasRoles;",
    "use Impersonate;"
);$ php artisan migrateLumki::insertLineBefore(
        base_path("routes/web.php"),
        "Route::get('/', function () {",
        "Route::impersonate();\n"
);Lumki::insertLineBefore(
        resource_path('views/navigation-dropdown.blade.php'),
        "@if (Laravel\Jetstream\Jetstream::hasApiFeatures())",
        "\n@lumki\n"
);$r1 = Role::firstOrCreate(["name" => "Superadmin"]);
$r2 = Role::firstOrCreate(["name" => "Admin"]);
$r3 = Role::firstOrCreate(["name" => "User"]);
$p1 = Permission::firstOrCreate(['name' => 'manage users']);
$r1->givePermissionTo('manage users');
$user = User::first();
$user->assignRole($r1);
$user->assignRole($r2);
$user->assignRole($r3);To change the prefix lumki in your routes you must publish the configuration
$ php artisan vendor:publish --tag=lumki.config Now, you can edit the file config/lumki.php and change the prefix from 'lumki' to whatever you want, empty string allowed, if this field is null 'lumki' is set as default value.
If you are struggling with the error of GuardDoesNotMatch could be that you have modified the provider in your config/auth.php file
In order to solve this problem you can specify the guard name of the model.
Eg: If you are using User Model but with an ldap connection using LdapRecord you can resolve this problem adding the code above in your User Model
class User extends Authenticatable
{
    // ...
    public function guardName(){
        return "web";
    }
}
Please see the changelog for more information on what has changed recently.
Please see contributing.md for details and a todolist.
If you discover any security related issues, please email author email instead of using the issue tracker.
license. Please see the license file for more information.



