Skip to content

Commit 0a0fdd7

Browse files
committed
Fixed delete role failing with no migrate role provided
For #4128
1 parent 3410cf2 commit 0a0fdd7

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

app/Http/Controllers/RoleController.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,8 @@ public function delete(Request $request, string $id)
151151
$this->checkPermission('user-roles-manage');
152152

153153
try {
154-
$this->permissionsRepo->deleteRole($id, $request->get('migrate_role_id', 0));
154+
$migrateRoleId = intval($request->get('migrate_role_id') ?: "0");
155+
$this->permissionsRepo->deleteRole($id, $migrateRoleId);
155156
} catch (PermissionsException $e) {
156157
$this->showErrorNotification($e->getMessage());
157158

tests/Permissions/RolesTest.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,22 @@ public function test_migrate_users_on_delete_works()
163163
$this->assertEquals($this->user->id, $roleA->users()->first()->id);
164164
}
165165

166+
public function test_delete_with_empty_migrate_option_works()
167+
{
168+
$role = $this->users->attachNewRole($this->user);
169+
170+
$this->assertCount(1, $role->users()->get());
171+
172+
$deletePage = $this->asAdmin()->get("/settings/roles/delete/$role->id");
173+
$this->withHtml($deletePage)->assertElementExists('select[name=migrate_role_id]');
174+
$resp = $this->asAdmin()->delete("/settings/roles/delete/$role->id", [
175+
'migrate_role_id' => '',
176+
]);
177+
178+
$resp->assertRedirect('/settings/roles');
179+
$this->assertDatabaseMissing('roles', ['id' => $role->id]);
180+
}
181+
166182
public function test_entity_permissions_are_removed_on_delete()
167183
{
168184
/** @var Role $roleA */

0 commit comments

Comments
 (0)