biscuit-quote 0.2.0-alpha4

macros for compile time datalog parsing for Biscuit authorization tokens
Documentation
use biscuit_auth::KeyPair;
use biscuit_quote::{authorizer, biscuit, block};
use std::time::{Duration, SystemTime};

let root = KeyPair::new();

let biscuit = biscuit!(
r#"
user({user_id});
right({user_id}, "file1", "read");
"#,
user_id = "1234",
).build(&root).expect("Failed to create biscuit");

let new_biscuit = biscuit.append(block!(
r#"
check if time($time), $time < {expiration};
"#,
expiration = SystemTime::now() + Duration::from_secs(86_400),
)).expect("Failed to append block");

new_biscuit.authorize(&authorizer!(
r#"
time({now});
operation({operation});
resource({resource});

is_allowed($user_id) <- right($user_id, $resource, $operation),
resource($resource),
operation($operation);

allow if is_allowed({user_id});
"#,
now = SystemTime::now(),
operation = "read",
resource = "file1",
user_id = "1234",
)).expect("Failed to authorize biscuit");