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=impersonate
Lumki::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 migrate
Lumki::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.