forgetCachedPermissions(); // ── Create permissions ──────────────────────────────────────────────── foreach (self::PERMISSIONS as $name) { Permission::firstOrCreate([ 'name' => $name, 'guard_name' => 'web', ], [ 'perm_group' => 'CallLogs', ]); } // ── Assign to admin & company_manager roles ─────────────────────────── foreach (['admin', 'company_manager'] as $roleName) { $role = Role::where('name', $roleName)->where('guard_name', 'web')->first(); if ($role) { foreach (self::PERMISSIONS as $name) { $perm = Permission::where('name', $name)->first(); if ($perm && ! $role->hasPermissionTo($perm)) { $role->givePermissionTo($perm); } } } } app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions(); } public function down(): void { app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions(); // Remove permissions from all roles, then delete $permissions = Permission::whereIn('name', self::PERMISSIONS)->get(); foreach ($permissions as $perm) { Role::all()->each(fn (Role $role) => $role->revokePermissionTo($perm)); $perm->delete(); } app()[\Spatie\Permission\PermissionRegistrar::class]->forgetCachedPermissions(); } }