-
Notifications
You must be signed in to change notification settings - Fork 83
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
RFC 53 implementation #1377
base: main
Are you sure you want to change the base?
RFC 53 implementation #1377
Conversation
Signed-off-by: Shaobo He <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Scanned through this, looks like a reasonable high-level approach to me
pub struct ValidatorEntityType { | ||
/// The name of the entity type. | ||
pub(crate) name: EntityType, | ||
|
||
/// The set of entity types that can be members of this entity type. When | ||
/// this structure is initially constructed, the field will contain direct | ||
/// children, but it will be updated to contain the closure of all | ||
/// descendants before it is used in any validation. | ||
pub descendants: HashSet<EntityType>, | ||
|
||
/// The attributes associated with this entity. | ||
pub(crate) attributes: Attributes, | ||
|
||
/// Indicates that this entity type may have additional attributes | ||
/// other than the declared attributes that may be accessed under partial | ||
/// schema validation. We do not know if they are present, and do not know | ||
/// their type when they are present. Attempting to access an undeclared | ||
/// attribute under standard validation is an error regardless of this flag. | ||
pub(crate) open_attributes: OpenTag, | ||
|
||
/// Tag type for this entity type. `None` indicates that entities of this | ||
/// type are not allowed to have tags. | ||
#[serde(skip_serializing_if = "Option::is_none")] | ||
pub(crate) tags: Option<Type>, | ||
pub enum ValidatorEntityType { | ||
Common { | ||
/// The name of the entity type. | ||
name: EntityType, | ||
|
||
/// The set of entity types that can be members of this entity type. When | ||
/// this structure is initially constructed, the field will contain direct | ||
/// children, but it will be updated to contain the closure of all | ||
/// descendants before it is used in any validation. | ||
descendants: HashSet<EntityType>, | ||
|
||
/// The attributes associated with this entity. | ||
attributes: Attributes, | ||
|
||
/// Indicates that this entity type may have additional attributes | ||
/// other than the declared attributes that may be accessed under partial | ||
/// schema validation. We do not know if they are present, and do not know | ||
/// their type when they are present. Attempting to access an undeclared | ||
/// attribute under standard validation is an error regardless of this flag. | ||
open_attributes: OpenTag, | ||
|
||
/// Tag type for this entity type. `None` indicates that entities of this | ||
/// type are not allowed to have tags. | ||
#[serde(skip_serializing_if = "Option::is_none")] | ||
tags: Option<Type>, | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change makes the fields pub
instead of pub(crate)
, this is probably fine, just drawing attention to this in case someone thinks they shouldn't be pub
Signed-off-by: Shaobo He <[email protected]>
Signed-off-by: Shaobo He <[email protected]>
Signed-off-by: Shaobo He <[email protected]>
Description of changes
Issue #, if available
Checklist for requesting a review
The change in this PR is (choose one, and delete the other options):
cedar-policy
(e.g., changes to the signature of an existing API).cedar-policy
(e.g., addition of a new API).cedar-policy
.cedar-policy-core
,cedar-validator
, etc.)I confirm that this PR (choose one, and delete the other options):
I confirm that
cedar-spec
(choose one, and delete the other options):cedar-spec
, and how you have tested that your updates are correct.)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):cedar-docs
. PRs should be targeted at astaging-X.Y
branch, notmain
.)