]> BookStack Code Mirror - bookstack/commitdiff
Fixed delete role failing with no migrate role provided
authorDan Brown <redacted>
Sat, 25 Mar 2023 12:07:59 +0000 (12:07 +0000)
committerDan Brown <redacted>
Sat, 25 Mar 2023 12:08:45 +0000 (12:08 +0000)
For #4128

app/Http/Controllers/RoleController.php
tests/Permissions/RolesTest.php

index 135ba329f61cfeb6ea0fd11705a5d1be90ddde82..6d397bdae61c491f30e183f7c4efd23ecf2c5ca8 100644 (file)
@@ -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());
 
index d4d975dbd234e47046daa0fd19a8678617c343b4..971479e28aee66d8ed31a33e7c24a71b963d330e 100644 (file)
@@ -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 */