From f70f6ffed9b48d6e0afbe976aa428ce2d15e3911 Mon Sep 17 00:00:00 2001 From: Nikhil Sinha Date: Wed, 11 Jun 2025 02:12:10 -0400 Subject: [PATCH 1/3] update list filters to support save view in prism do not skip if query string is empty update user access to the dataset instead of query string for filters --- src/users/filters.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/users/filters.rs b/src/users/filters.rs index d6ade5344..8f6ce2cf1 100644 --- a/src/users/filters.rs +++ b/src/users/filters.rs @@ -185,18 +185,18 @@ impl Filters { let query = if let Some(q) = &f.query.filter_query { q } else { - continue; + &String::default() }; let filter_type = &f.query.filter_type; // if filter type is one of SQL or filter // then check if the user has access to the dataset based on the query string // if filter type is search then check if the user has access to the dataset based on the dataset name - if *filter_type == FilterType::SQL || *filter_type == FilterType::Filter { + if *filter_type == FilterType::SQL { if (user_auth_for_query(key, query).await).is_ok() { filters.push(f.clone()) } - } else if *filter_type == FilterType::Search { + } else if *filter_type == FilterType::Search || *filter_type == FilterType::Filter { let dataset_name = &f.stream_name; let permissions = Users.get_permissions(key); if user_auth_for_datasets(&permissions, &[dataset_name.to_string()]).is_ok() { From 7bce091f185948cf2c7a5554fb939b571f5e2909 Mon Sep 17 00:00:00 2001 From: Nikhil Sinha Date: Wed, 11 Jun 2025 02:17:19 -0400 Subject: [PATCH 2/3] update comments --- src/users/filters.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/users/filters.rs b/src/users/filters.rs index 8f6ce2cf1..646f98195 100644 --- a/src/users/filters.rs +++ b/src/users/filters.rs @@ -189,9 +189,8 @@ impl Filters { }; let filter_type = &f.query.filter_type; - // if filter type is one of SQL or filter - // then check if the user has access to the dataset based on the query string - // if filter type is search then check if the user has access to the dataset based on the dataset name + // if filter type is SQL, check if the user has access to the dataset based on the query string + // if filter type is search or filter, check if the user has access to the dataset based on the dataset name if *filter_type == FilterType::SQL { if (user_auth_for_query(key, query).await).is_ok() { filters.push(f.clone()) From 2ec90d79a6dcfe512d0e1e57dbc22c2faee2c288 Mon Sep 17 00:00:00 2001 From: Nikhil Sinha Date: Sun, 15 Jun 2025 14:38:37 -0400 Subject: [PATCH 3/3] refactor --- src/users/filters.rs | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/users/filters.rs b/src/users/filters.rs index 646f98195..2baf22216 100644 --- a/src/users/filters.rs +++ b/src/users/filters.rs @@ -180,13 +180,9 @@ impl Filters { let read = self.0.read().await; let mut filters = Vec::new(); - + let permissions = Users.get_permissions(key); for f in read.iter() { - let query = if let Some(q) = &f.query.filter_query { - q - } else { - &String::default() - }; + let query: &str = f.query.filter_query.as_deref().unwrap_or(""); let filter_type = &f.query.filter_type; // if filter type is SQL, check if the user has access to the dataset based on the query string @@ -197,7 +193,6 @@ impl Filters { } } else if *filter_type == FilterType::Search || *filter_type == FilterType::Filter { let dataset_name = &f.stream_name; - let permissions = Users.get_permissions(key); if user_auth_for_datasets(&permissions, &[dataset_name.to_string()]).is_ok() { filters.push(f.clone()) }