Skip to content

Commit 1fa5a31

Browse files
committed
Fixed role entity permissions ignoring inheritance
Added additional scnenario tests to cover
1 parent 8be3645 commit 1fa5a31

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

app/Auth/Permissions/EntityPermissionEvaluator.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ protected function collapseAndCategorisePermissions(array $typeIdChain, array $p
6666
$permitsByType[$type][$roleId] = $permission->{$this->action};
6767
}
6868
}
69+
70+
if (isset($permitsByType['fallback'][0])) {
71+
break;
72+
}
6973
}
7074

7175
return $permitsByType;

dev/docs/permission-scenario-testing.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,4 +317,27 @@ User granted page permission.
317317
- Role B has no entity chapter permissions.
318318
- User has Role A & B.
319319

320+
User denied page permission.
321+
322+
#### test_90_fallback_overrides_parent_entity_role_deny
323+
324+
- Chapter permissions have inherit disabled.
325+
- Page permissions have inherit disabled.
326+
- Chapter fallback has entity deny permission.
327+
- Page fallback has entity deny permission.
328+
- Role A has entity allow chapter permission.
329+
- User has Role A.
330+
331+
User denied page permission.
332+
333+
#### test_91_fallback_overrides_parent_entity_role_inherit
334+
335+
- Book permissions have inherit disabled.
336+
- Chapter permissions have inherit disabled.
337+
- Page permissions have inherit enabled.
338+
- Book fallback has entity deny permission.
339+
- Chapter fallback has entity deny permission.
340+
- Role A has entity allow book permission.
341+
- User has Role A.
342+
320343
User denied page permission.

tests/Permissions/Scenarios/EntityRolePermissionsTest.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -293,4 +293,31 @@ public function test_89_fallback_override_deny_multi_role_inherit()
293293

294294
$this->assertNotVisibleToUser($page, $user);
295295
}
296+
297+
public function test_90_fallback_overrides_parent_entity_role_deny()
298+
{
299+
[$user, $roleA] = $this->users->newUserWithRole();
300+
$page = $this->entities->page();
301+
$chapter = $page->chapter;
302+
303+
$this->permissions->setFallbackPermissions($chapter, []);
304+
$this->permissions->setFallbackPermissions($page, []);
305+
$this->permissions->addEntityPermission($chapter, ['view'], $roleA);
306+
307+
$this->assertNotVisibleToUser($page, $user);
308+
}
309+
310+
public function test_91_fallback_overrides_parent_entity_role_inherit()
311+
{
312+
[$user, $roleA] = $this->users->newUserWithRole();
313+
$page = $this->entities->page();
314+
$chapter = $page->chapter;
315+
$book = $page->book;
316+
317+
$this->permissions->setFallbackPermissions($book, []);
318+
$this->permissions->setFallbackPermissions($chapter, []);
319+
$this->permissions->addEntityPermission($book, ['view'], $roleA);
320+
321+
$this->assertNotVisibleToUser($page, $user);
322+
}
296323
}

0 commit comments

Comments
 (0)