1use auth_policy::{
2 decision::{Decision, Effect},
3 engine::PolicyEngine,
4 policy::{Condition, Policy, Target},
5 request::Request,
6};
7
8fn main() -> Result<(), Box<dyn std::error::Error>> {
9 let policy = Policy::builder("document-read")
10 .target(Target::action("document:read"))
11 .condition(Condition::equals("resource.owner_id", "actor.id"))
12 .effect(Effect::Permit)
13 .build()?;
14
15 let engine = PolicyEngine::from_policies([policy]);
16
17 let request = Request::new()
18 .action("document:read")
19 .actor_attr("id", "user-123")
20 .resource_attr("owner_id", "user-123");
21
22 let decision = engine.evaluate(&request)?;
23 println!("decision: {:?}", decision);
24 assert_eq!(decision, Decision::Permit);
25
26 Ok(())
27}