@@ -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