Skip to content

Commit 41c3ed1

Browse files
committed
Content Permissions API: Fixed param combination bug
Fixes issue where providing owner_id alongside certain fallback_permissions would cause the owner change not to take affect, due to bad variable shadowing. For #4323
1 parent f5396ec commit 41c3ed1

File tree

2 files changed

+35
-3
lines changed

2 files changed

+35
-3
lines changed

app/Entities/Tools/PermissionsUpdater.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,9 +55,9 @@ public function updateFromApiRequestData(Entity $entity, array $data): void
5555
}
5656

5757
if (isset($data['fallback_permissions']['inheriting']) && $data['fallback_permissions']['inheriting'] !== true) {
58-
$data = $data['fallback_permissions'];
59-
$data['role_id'] = 0;
60-
$rolePermissionData = $this->formatPermissionsFromApiRequestToEntityPermissions([$data], true);
58+
$fallbackData = $data['fallback_permissions'];
59+
$fallbackData['role_id'] = 0;
60+
$rolePermissionData = $this->formatPermissionsFromApiRequestToEntityPermissions([$fallbackData], true);
6161
$entity->permissions()->createMany($rolePermissionData);
6262
}
6363

tests/Api/ContentPermissionsApiTest.php

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,4 +259,36 @@ public function test_update_can_clear_fallback_permissions()
259259
],
260260
]);
261261
}
262+
263+
public function test_update_can_both_provide_owner_and_fallback_permissions()
264+
{
265+
$user = $this->users->viewer();
266+
$page = $this->entities->page();
267+
$page->owned_by = null;
268+
$page->save();
269+
270+
$this->actingAsApiAdmin();
271+
$resp = $this->putJson($this->baseEndpoint . "/page/{$page->id}", [
272+
"owner_id" => $user->id,
273+
'fallback_permissions' => [
274+
'inheriting' => false,
275+
'view' => false,
276+
'create' => false,
277+
'update' => false,
278+
'delete' => false,
279+
],
280+
]);
281+
282+
$resp->assertOk();
283+
$this->assertDatabaseHas('pages', ['id' => $page->id, 'owned_by' => $user->id]);
284+
$this->assertDatabaseHas('entity_permissions', [
285+
'entity_id' => $page->id,
286+
'entity_type' => 'page',
287+
'role_id' => 0,
288+
'view' => false,
289+
'create' => false,
290+
'update' => false,
291+
'delete' => false,
292+
]);
293+
}
262294
}

0 commit comments

Comments
 (0)