Module biscuit_auth::macros
source · Expand description
Procedural macros to construct Datalog policies Procedural macros to create tokens and authorizers
use biscuit_auth::KeyPair;
use biscuit_auth::macros::{authorizer, biscuit, block};
use std::time::{Duration, SystemTime};
let root = KeyPair::new();
let user_id = "1234";
let biscuit = biscuit!(
r#"
// you can directly reference in-scope variables
user({user_id});
right({user_id}, "file1", {operation});
"#,
// you can also declare bindings manually
operation = "read",
).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");
Macros§
- Create an
Authorizer
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual block building. - Merge facts, rules, checks, and policies into an
Authorizer
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual block building. - Create an
BiscuitBuilder
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual block building. - Merge facts, rules, and checks into a
BiscuitBuilder
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual block building. - Create a
BlockBuilder
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual block building. - Merge facts, rules, and checks into a
BlockBuilder
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual block building. - Create a
Check
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual builder calls. - Create a
Fact
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual builder calls. - Create a
Policy
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual builder calls. - Create a
Rule
from a datalog string and optional parameters. The datalog string is parsed at compile time and replaced by manual builder calls.