1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//! Schema-driven privacy for entity and field access.
//!
//! [`PrivacyEvaluator`] applies schema/trait policy rules. Built-ins live in
//! [`crate::privacy_policies`] / [`policies`].
//!
//! Empty entity policy lists **deny** non-[`Actor::System`](crate::actor::Actor) viewers.
//! [`crate::query::QueryCore::execute`] drops rows the viewer cannot read.
//! Absent field-level policy means no extra restriction beyond entity checks.
//!
//! Declare `policies:` on schemas (or `impl` [`PolicyEvaluator`]). Privacy evaluation is
//! schema-driven.
//!
//! ```
//! use valence_core::actor::Actor;
//! use valence_core::privacy::{PrivacyEvaluator, PrivacyPolicy};
//! use valence_core::privacy_policies::common;
//!
//! let policy = PrivacyPolicy {
//! allow: vec![common::AUTHENTICATED],
//! ..PrivacyPolicy::default()
//! };
//! let record = serde_json::json!({"id": "1"});
//! assert!(PrivacyEvaluator::evaluate(&policy, &record, &Actor::Anonymous).is_err());
//! ```
pub use ;
pub use PolicyEvaluator;
pub use ;
pub use PrivacyEvaluator;