@@ -96,12 +96,12 @@ pub fn validate_rlac_rule(rule: &RowLevelAccessControl, model: &Model) -> Result
96
96
97
97
let required_properties: Vec < _ > = required_properties
98
98
. iter ( )
99
- . map ( |property| property. name . to_lowercase ( ) )
99
+ . map ( |property| property. normalized_name ( ) )
100
100
. collect ( ) ;
101
101
102
102
let missed_properties: Vec < _ > = session_properties
103
103
. iter ( )
104
- . filter ( |property| !required_properties. contains ( property) )
104
+ . filter ( |property| !required_properties. contains ( & property. as_str ( ) ) )
105
105
. collect ( ) ;
106
106
if !missed_properties. is_empty ( ) {
107
107
return plan_err ! (
@@ -144,9 +144,7 @@ pub fn build_filter_expression(
144
144
let Some ( property_value) = properties. get ( & property_name) . or_else ( || {
145
145
required_properties
146
146
. iter ( )
147
- . filter ( |r| {
148
- !r. required && r. name . eq_ignore_ascii_case ( & property_name)
149
- } )
147
+ . filter ( |r| !r. required && r. normalized_name ( ) . eq ( & property_name) )
150
148
. map ( |r| & r. default_expr )
151
149
. next ( )
152
150
} ) else {
@@ -262,7 +260,7 @@ pub fn validate_rule(
262
260
. iter ( )
263
261
. map ( |property| {
264
262
if property. required {
265
- if !is_property_present ( headers, & property. name ) {
263
+ if !is_property_present ( headers, property) {
266
264
return plan_err ! (
267
265
"session property {} is required for `{}` rule but not found in headers" ,
268
266
property. name,
@@ -271,7 +269,7 @@ pub fn validate_rule(
271
269
}
272
270
Ok ( true )
273
271
} else {
274
- let exist = is_property_present ( headers, & property. name ) ;
272
+ let exist = is_property_present ( headers, property) ;
275
273
if exist
276
274
|| property
277
275
. default_expr
@@ -308,7 +306,7 @@ pub(crate) fn validate_clac_rule(
308
306
}
309
307
310
308
let property = & clac. required_properties [ 0 ] ;
311
- let value_opt = properties. get ( & property. name ) ;
309
+ let value_opt = properties. get ( property. normalized_name ( ) ) ;
312
310
313
311
match value_opt {
314
312
Some ( Some ( value) ) => ( clac. eval ( value) , Some ( clac. name . clone ( ) ) ) ,
@@ -368,10 +366,10 @@ pub(crate) fn validate_clac_rule(
368
366
/// If the property is present and not empty, return true.
369
367
fn is_property_present (
370
368
headers : & HashMap < String , Option < String > > ,
371
- property_name : & str ,
369
+ property : & SessionProperty ,
372
370
) -> bool {
373
371
headers
374
- . get ( & property_name . to_lowercase ( ) )
372
+ . get ( property . normalized_name ( ) )
375
373
. map ( |v| v. as_ref ( ) . is_some_and ( |value| !value. is_empty ( ) ) )
376
374
. unwrap_or ( false )
377
375
}
0 commit comments