fix(cedar): always use ForgeDB::Document as resource entity type#18
Merged
jonathanmagambo merged 1 commit intomainfrom Mar 12, 2026
Merged
fix(cedar): always use ForgeDB::Document as resource entity type#18jonathanmagambo merged 1 commit intomainfrom
jonathanmagambo merged 1 commit intomainfrom
Conversation
Collection names like 'user' were being capitalized and used as Cedar
entity types — colliding with the 'User' principal type registered in
the schema. Cedar's Request::new() with strict schema validation then
rejected the request outright, bubbling up as a 403 Forbidden on every
read from a collection whose name matched a Cedar entity type.
Fix: hardcode ForgeDB::Document as the resource entity type for all
collection and document routes. The full collection/id string goes in
the entity ID anyway, so Cedar policies can still discriminate at any
granularity via ForgeDB::Document::"collection/id".
Also fix the TUI editor buffer to show the inner doc object from the
server's {id, doc} response wrapper instead of the wrapper itself,
preventing redundant id fields from appearing on re-save.
Adds regression test: collection_named_user_resolves_as_document_not_principal_type
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.
Collection names like 'user' were being capitalized and used as Cedar entity types — colliding with the 'User' principal type registered in the schema. Cedar's Request::new() with strict schema validation then rejected the request outright, bubbling up as a 403 Forbidden on every read from a collection whose name matched a Cedar entity type.
Fix: hardcode ForgeDB::Document as the resource entity type for all collection and document routes. The full collection/id string goes in the entity ID anyway, so Cedar policies can still discriminate at any granularity via ForgeDB::Document::"collection/id".
Also fix the TUI editor buffer to show the inner doc object from the server's {id, doc} response wrapper instead of the wrapper itself, preventing redundant id fields from appearing on re-save.
Adds regression test: collection_named_user_resolves_as_document_not_principal_type