Skip to content

Commit f6a6b11

Browse files
committed
Added and addressed multi-role/own-role-perm/inheretance scenario
Found during manual testing. Have checked against relation queries manually too.
1 parent 48df872 commit f6a6b11

File tree

3 files changed

+47
-1
lines changed

3 files changed

+47
-1
lines changed

app/Auth/Permissions/PermissionApplicator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public function restrictEntityQuery(Builder $query): Builder
9999
->selectRaw('max(status) as status')
100100
->whereIn('role_id', $this->getCurrentUserRoleIds())
101101
->groupBy(['entity_type', 'entity_id'])
102-
->havingRaw('(status IN (1, 3) or owner_id = ?)', [$this->currentUser()->id]);
102+
->havingRaw('(status IN (1, 3) or (owner_id = ? and status != 2))', [$this->currentUser()->id]);
103103
});
104104
});
105105
}

dev/docs/permission-scenario-testing.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,16 @@ User denied page permission.
229229

230230
User denied page permission.
231231

232+
#### test_71_multi_role_inheriting_deny_on_own
233+
234+
- Page permissions have inherit enabled.
235+
- Role A has own page role permission.
236+
- Role B has entity denied page permission.
237+
- User has Role A and B.
238+
- Use owns Page.
239+
240+
User denied page permission.
241+
232242
#### test_75_multi_role_inherited_deny_via_parent
233243

234244
- Page permissions have inherit enabled.
@@ -239,6 +249,16 @@ User denied page permission.
239249

240250
User denied page permission.
241251

252+
#### test_76_multi_role_inherited_deny_via_parent_on_own
253+
254+
- Page permissions have inherit enabled.
255+
- Chapter permissions have inherit enabled.
256+
- Role A has own page role permission.
257+
- Role B has entity denied chapter permission.
258+
- User has Role A & B.
259+
260+
User denied page permission.
261+
242262
#### test_80_fallback_override_allow
243263

244264
- Page permissions have inherit disabled.

tests/Permissions/Scenarios/EntityRolePermissionsTest.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,19 @@ public function test_70_multi_role_inheriting_deny()
187187
$this->assertNotVisibleToUser($page, $user);
188188
}
189189

190+
public function test_71_multi_role_inheriting_deny_on_own()
191+
{
192+
[$user, $roleA] = $this->users->newUserWithRole([], ['page-view-own']);
193+
$roleB = $this->users->attachNewRole($user);
194+
$page = $this->entities->page();
195+
$this->permissions->changeEntityOwner($page, $user);
196+
197+
$this->permissions->addEntityPermission($page, [], $roleB);
198+
199+
$this->assertNotVisibleToUser($page, $user);
200+
}
201+
202+
190203
public function test_75_multi_role_inherited_deny_via_parent()
191204
{
192205
[$user, $roleA] = $this->users->newUserWithRole([], ['page-view-all']);
@@ -199,6 +212,19 @@ public function test_75_multi_role_inherited_deny_via_parent()
199212
$this->assertNotVisibleToUser($page, $user);
200213
}
201214

215+
public function test_76_multi_role_inherited_deny_via_parent_on_own()
216+
{
217+
[$user, $roleA] = $this->users->newUserWithRole([], ['page-view-own']);
218+
$roleB = $this->users->attachNewRole($user);
219+
$page = $this->entities->pageWithinChapter();
220+
$chapter = $page->chapter;
221+
$this->permissions->changeEntityOwner($page, $user);
222+
223+
$this->permissions->addEntityPermission($chapter, [], $roleB);
224+
225+
$this->assertNotVisibleToUser($page, $user);
226+
}
227+
202228
public function test_80_fallback_override_allow()
203229
{
204230
[$user, $roleA] = $this->users->newUserWithRole();

0 commit comments

Comments
 (0)