Skip to content

Commit 188cbd2

Browse files
committed
refactor: drop table level permission control
1 parent 28c6637 commit 188cbd2

File tree

1 file changed

+6
-25
lines changed

1 file changed

+6
-25
lines changed

datafusion-postgres/src/hooks/permissions.rs

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -40,21 +40,21 @@ impl PermissionsHook {
4040
let query_trimmed = query_lower.trim();
4141

4242
let (required_permission, resource) = if query_trimmed.starts_with("select") {
43-
(Permission::Select, self.extract_table_from_query(query))
43+
(Permission::Select, ResourceType::All)
4444
} else if query_trimmed.starts_with("insert") {
45-
(Permission::Insert, self.extract_table_from_query(query))
45+
(Permission::Insert, ResourceType::All)
4646
} else if query_trimmed.starts_with("update") {
47-
(Permission::Update, self.extract_table_from_query(query))
47+
(Permission::Update, ResourceType::All)
4848
} else if query_trimmed.starts_with("delete") {
49-
(Permission::Delete, self.extract_table_from_query(query))
49+
(Permission::Delete, ResourceType::All)
5050
} else if query_trimmed.starts_with("create table")
5151
|| query_trimmed.starts_with("create view")
5252
{
5353
(Permission::Create, ResourceType::All)
5454
} else if query_trimmed.starts_with("drop") {
55-
(Permission::Drop, self.extract_table_from_query(query))
55+
(Permission::Drop, ResourceType::All)
5656
} else if query_trimmed.starts_with("alter") {
57-
(Permission::Alter, self.extract_table_from_query(query))
57+
(Permission::Alter, ResourceType::All)
5858
} else {
5959
// For other queries (SHOW, EXPLAIN, etc.), allow all users
6060
return Ok(());
@@ -78,25 +78,6 @@ impl PermissionsHook {
7878

7979
Ok(())
8080
}
81-
82-
/// Extract table name from query (simplified parsing)
83-
fn extract_table_from_query(&self, query: &str) -> ResourceType {
84-
let words: Vec<&str> = query.split_whitespace().collect();
85-
86-
// Simple heuristic to find table names
87-
for (i, word) in words.iter().enumerate() {
88-
let word_lower = word.to_lowercase();
89-
if (word_lower == "from" || word_lower == "into" || word_lower == "table")
90-
&& i + 1 < words.len()
91-
{
92-
let table_name = words[i + 1].trim_matches(|c| c == '(' || c == ')' || c == ';');
93-
return ResourceType::Table(table_name.to_string());
94-
}
95-
}
96-
97-
// If we can't determine the table, default to All
98-
ResourceType::All
99-
}
10081
}
10182

10283
#[async_trait]

0 commit comments

Comments
 (0)