use auth_policy::{
decision::{Decision, Effect},
engine::PolicyEngine,
policy::{Condition, Policy, Target},
request::Request,
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
let policy = Policy::builder("document-read")
.target(Target::action("document:read"))
.condition(Condition::equals("resource.owner_id", "actor.id"))
.effect(Effect::Permit)
.build()?;
let engine = PolicyEngine::from_policies([policy]);
let request = Request::new()
.action("document:read")
.actor_attr("id", "user-123")
.resource_attr("owner_id", "user-123");
let decision = engine.evaluate(&request)?;
println!("decision: {:?}", decision);
assert_eq!(decision, Decision::Permit);
Ok(())
}