From 11b6391c835108cea68af09628dbeca0b443f7c7 Mon Sep 17 00:00:00 2001 From: Dominik Csapak Date: Wed, 20 May 2020 12:15:34 +0200 Subject: [PATCH] add 'exact' parameter to extract_acl_node_data so that we can return acls for a single path Signed-off-by: Dominik Csapak --- src/api2/access/acl.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/api2/access/acl.rs b/src/api2/access/acl.rs index fc598d9e..1c7517dc 100644 --- a/src/api2/access/acl.rs +++ b/src/api2/access/acl.rs @@ -41,6 +41,7 @@ fn extract_acl_node_data( node: &acl::AclTreeNode, path: &str, list: &mut Vec, + exact: bool, ) { for (user, roles) in &node.users { for (role, propagate) in roles { @@ -64,9 +65,12 @@ fn extract_acl_node_data( }); } } + if exact { + return; + } for (comp, child) in &node.children { let new_path = format!("{}/{}", path, comp); - extract_acl_node_data(child, &new_path, list); + extract_acl_node_data(child, &new_path, list, exact); } } @@ -93,7 +97,7 @@ pub fn read_acl( let (tree, _digest) = acl::config()?; let mut list: Vec = Vec::new(); - extract_acl_node_data(&tree.root, "", &mut list); + extract_acl_node_data(&tree.root, "", &mut list, false); Ok(list) }