auth-policy 0.0.2

Rust crate for evaluating authorization decisions against declarative policies
Documentation
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(())
}