From dde38e91b5fe63c5673d3c669b303a067228dc1b Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Sat, 25 Mar 2023 12:07:59 +0000 Subject: [PATCH] Fixed delete role failing with no migrate role provided For #4128 --- app/Http/Controllers/RoleController.php | 3 ++- tests/Permissions/RolesTest.php | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/RoleController.php b/app/Http/Controllers/RoleController.php index 135ba329f..6d397bdae 100644 --- a/app/Http/Controllers/RoleController.php +++ b/app/Http/Controllers/RoleController.php @@ -151,7 +151,8 @@ class RoleController extends Controller $this->checkPermission('user-roles-manage'); try { - $this->permissionsRepo->deleteRole($id, $request->get('migrate_role_id', 0)); + $migrateRoleId = intval($request->get('migrate_role_id') ?: "0"); + $this->permissionsRepo->deleteRole($id, $migrateRoleId); } catch (PermissionsException $e) { $this->showErrorNotification($e->getMessage()); diff --git a/tests/Permissions/RolesTest.php b/tests/Permissions/RolesTest.php index d4d975dbd..971479e28 100644 --- a/tests/Permissions/RolesTest.php +++ b/tests/Permissions/RolesTest.php @@ -163,6 +163,22 @@ class RolesTest extends TestCase $this->assertEquals($this->user->id, $roleA->users()->first()->id); } + public function test_delete_with_empty_migrate_option_works() + { + $role = $this->users->attachNewRole($this->user); + + $this->assertCount(1, $role->users()->get()); + + $deletePage = $this->asAdmin()->get("/settings/roles/delete/$role->id"); + $this->withHtml($deletePage)->assertElementExists('select[name=migrate_role_id]'); + $resp = $this->asAdmin()->delete("/settings/roles/delete/$role->id", [ + 'migrate_role_id' => '', + ]); + + $resp->assertRedirect('/settings/roles'); + $this->assertDatabaseMissing('roles', ['id' => $role->id]); + } + public function test_entity_permissions_are_removed_on_delete() { /** @var Role $roleA */