permission_macro
A sub-crate of permission_check, which is used to provide more extensive support for build-time checking of permissions.
A simple example
use ;
For better example, check the README in permission_check crate
A sub-crate of permission_check, which is used to provide more extensive support for build-time checking of permissions.
use permission_macro::{perm_parser, perm_expr};
#[test]
fn test_1() {
let checker = perm_expr!(
((org.1047.role.admin.enact | org.1047.role.owner.enact) | (org.1047.user.write && (org.1047.user.read | org.1047.user.read_one)) | (org.1047.user.243.read && org.1047.user.243.write)) &
!(user.blacklist.enact & !user.blacklist.*)
);
let org_id = 1047;
let user_id = 243;
assert_eq!(
checker.with_perm(vec![
perm_parser!(org.{org_id}.user.{user_id}.read),
perm_parser!(org.{org_id}.user.{user_id}.write)
]),
true
);
let org_id = 1047;
let user_id = 244;
assert_eq!(
checker.with_perm(vec![
perm_parser!(org.{org_id}.user.{user_id}.read),
perm_parser!(org.{org_id}.user.{user_id}.write)
]),
false
);
}
For better example, check the README in permission_check crate