Repository navigation
Fix query listing of nested implicit inheritIf relations - #359
Open
BetterAndBetterII wants to merge 1 commit into
Open
BetterAndBetterII wants to merge 1 commit into
BetterAndBetterII wants to merge 1 commit into
Conversation
Check already walks inheritIf through intermediate types, but Query only listed explicit warrants on ofType, so a two-hop model such as tenant.admin -> partner.member -> account.member authorized while select returned no rows. Expand implicit intermediate grants when the inheritIf target is a different type or relation, and keep the explicit edge walk for self-referential rules.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
CheckandQuerydisagree on nestedinheritIf/ofType/withRelationrules.Given:
partner.memberinheritstenant.adminviaparentaccount.memberinheritspartner.memberviaowneruser:stephenisadminoftenant:testCheck(user:stephen member account:customer1)returns Authorized, butreturns no rows. One hop (
select partner where user:stephen is member) already worked.queryRulelisted only explicit warrants on the intermediate type. The partner membership is implicit, so the second hop never sawpartner:testpartand the account query stayed empty. Self-referential rules (for exampledocument.ownerviaparent) still need that explicit-edge walk so expansion stays bounded.Change
When the
inheritIftarget is a different object type or relation, expand implicit intermediate grants withQuerybefore followingwithRelation. Same-type/same-relation rules keep the explicitlistWarrantspath. Recursion is capped.API tests in
tests/v2/query-nested-inherit.jsoncover:select member of type user for account:customer1select explicit account ...stays emptyFixes #341