If you want to remove them all and just add them to the admin, then yes that should work fine. Personally I have so many roles and permissions set, that I only add the new ones that I need. I have made a webpage in my admin where I can add it from :)
Aug 11, 2022
4
Level 10
Reseed Spattie permissions and roles
Hi all,
Just need a bit of advice to make sure I am doing it right(The Laravel way).
When I update my controllers, from time to time I need to add more permissions and roles.
What is the best way to re-seed as the below command will not work and I really do not want to refresh all my seeders as I have many.
php artisan db:seed --class="PermissionsSeeder"
Shall I add this at the top of the seeder?
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Spatie\Permission\PermissionRegistrar;
class PermissionsSeeder extends Seeder
{
public function run()
{
//HERE//
DB::table('roles')->truncate();
DB::table('roles_has_permissions')->truncate();
DB::table('model_has_roles')->truncate();
DB::table('model_has_permissions')->truncate();
//HERE//
// Reset cached roles and permissions
app()[PermissionRegistrar::class]->forgetCachedPermissions();
// Create default permissions
Permission::create(['name' => 'list services']);
Permission::create(['name' => 'view services']);
Permission::create(['name' => 'create services']);
Permission::create(['name' => 'update services']);
Permission::create(['name' => 'delete services']);
Permission::create(['name' => 'view profile']);
Permission::create(['name' => 'update profile']);
// Create user role and assign existing permissions
$currentPermissions = Permission::all();
$userRole = Role::create(['name' => 'user']);
$userRole->givePermissionTo($currentPermissions);
// Create admin exclusive permissions
Permission::create(['name' => 'list roles']);
Permission::create(['name' => 'view roles']);
Permission::create(['name' => 'create roles']);
Permission::create(['name' => 'update roles']);
Permission::create(['name' => 'delete roles']);
Permission::create(['name' => 'list permissions']);
Permission::create(['name' => 'view permissions']);
Permission::create(['name' => 'create permissions']);
Permission::create(['name' => 'update permissions']);
Permission::create(['name' => 'delete permissions']);
Permission::create(['name' => 'list users']);
Permission::create(['name' => 'view users']);
Permission::create(['name' => 'create users']);
Permission::create(['name' => 'update users']);
Permission::create(['name' => 'delete users']);
// Create admin role and assign all permissions
$allPermissions = Permission::all();
$adminRole = Role::create(['name' => 'super-admin']);
$adminRole->givePermissionTo($allPermissions);
$user = \App\Models\User::whereEmail('[email protected]')->first();
if ($user) {
$user->assignRole($adminRole);
}
}
}
Thank you!
Level 102
1 like
Please or to participate in this conversation.