Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve cedar policy API to access request context information #1318

Conversation

tamas-jozsa
Copy link
Contributor

@tamas-jozsa tamas-jozsa commented Nov 13, 2024

Description of changes

Added a new get helper method to Context that allows easy extraction of generic values from the context by key. This method simplifies the common use case of retrieving values from Context objects.

Issue #, if available

Add get convenience method to Context for generic value extraction

Checklist for requesting a review

The change in this PR is (choose one, and delete the other options):

  • A breaking change requiring a major version bump to cedar-policy (e.g., changes to the signature of an existing API).
  • A backwards-compatible change requiring a minor version bump to cedar-policy (e.g., addition of a new API).
  • A bug fix or other functionality change requiring a patch to cedar-policy.
  • A change "invisible" to users (e.g., documentation, changes to "internal" crates like cedar-policy-core, cedar-validator, etc.)
  • A change (breaking or otherwise) that only impacts unreleased or experimental code.

I confirm that this PR (choose one, and delete the other options):

  • Updates the "Unreleased" section of the CHANGELOG with a description of my change (required for major/minor version bumps).
  • Does not update the CHANGELOG because my change does not significantly impact released code.

I confirm that cedar-spec (choose one, and delete the other options):

  • Does not require updates because my change does not impact the Cedar formal model or DRT infrastructure.
  • Requires updates, and I have made / will make these updates myself. (Please include in your description a timeline or link to the relevant PR in cedar-spec, and how you have tested that your updates are correct.)
  • Requires updates, but I do not plan to make them in the near future. (Make sure that your changes are hidden behind a feature flag to mark them as experimental.)
  • I'm not sure how my change impacts cedar-spec. (Post your PR anyways, and we'll discuss in the comments.)

I confirm that docs.cedarpolicy.com (choose one, and delete the other options):

  • Does not require updates because my change does not impact the Cedar language specification.
  • Requires updates, and I have made / will make these updates myself. (Please include in your description a timeline or link to the relevant PR in cedar-docs. PRs should be targeted at a staging-X.Y branch, not main.)
  • I'm not sure how my change impacts the documentation. (Post your PR anyways, and we'll discuss in the comments.)

@tamas-jozsa tamas-jozsa force-pushed the feature/tamas/access-request-context branch 3 times, most recently from 562d7b7 to 20c5164 Compare November 14, 2024 09:52
/// }
/// assert_eq!(context.get("nonexistent"), None);
/// ```
pub fn get(&self, key: &str) -> Option<&Value> {
Copy link
Contributor

@john-h-kastner-aws john-h-kastner-aws Nov 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For the public API this should probably be an EvalResult instead of a Value since Value isn't re-exported from cedar-policy-core. I think there's a already a From impl for this conversion, though it will mean this function can't return a reference anymore.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, John. I've pushed an update to match these requirements.

@tamas-jozsa tamas-jozsa force-pushed the feature/tamas/access-request-context branch 4 times, most recently from 8a92f2e to 13f32a3 Compare November 15, 2024 11:55
Copy link
Contributor

@john-h-kastner-aws john-h-kastner-aws left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me.

@john-h-kastner-aws
Copy link
Contributor

also, maybe add a line to the changelog for the new functionality

Signed-off-by: Tamas Jozsa <tamas@cloudflare.com>
@tamas-jozsa tamas-jozsa force-pushed the feature/tamas/access-request-context branch from 13f32a3 to 2c1a700 Compare November 15, 2024 17:54
@tamas-jozsa
Copy link
Contributor Author

also, maybe add a line to the changelog for the new functionality

done and done

@john-h-kastner-aws john-h-kastner-aws merged commit daa9f89 into cedar-policy:main Nov 15, 2024
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants