From 8d3931b76e05f2b5a8658569790e6a69d81673cb Mon Sep 17 00:00:00 2001 From: mdecimus Date: Sat, 10 Aug 2024 09:10:27 +0200 Subject: [PATCH] Support multiple secret columns in SQL directories --- crates/directory/src/backend/sql/config.rs | 6 +++--- crates/directory/src/backend/sql/lookup.rs | 6 +++++- crates/directory/src/backend/sql/mod.rs | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/crates/directory/src/backend/sql/config.rs b/crates/directory/src/backend/sql/config.rs index a8295fe3..dc69cdbf 100644 --- a/crates/directory/src/backend/sql/config.rs +++ b/crates/directory/src/backend/sql/config.rs @@ -32,9 +32,9 @@ impl SqlDirectory { .unwrap_or_default() .to_string(), column_secret: config - .value((&prefix, "columns.secret")) - .unwrap_or_default() - .to_string(), + .values((&prefix, "columns.secret")) + .map(|(_, v)| v.to_string()) + .collect(), column_quota: config .value((&prefix, "columns.quota")) .unwrap_or_default() diff --git a/crates/directory/src/backend/sql/lookup.rs b/crates/directory/src/backend/sql/lookup.rs index f2e15061..1638af3f 100644 --- a/crates/directory/src/backend/sql/lookup.rs +++ b/crates/directory/src/backend/sql/lookup.rs @@ -209,7 +209,11 @@ impl SqlMappings { if let Some(row) = rows.rows.into_iter().next() { for (name, value) in rows.names.into_iter().zip(row.values) { - if name.eq_ignore_ascii_case(&self.column_secret) { + if self + .column_secret + .iter() + .any(|c| name.eq_ignore_ascii_case(c)) + { if let Value::Text(secret) = value { principal.secrets.push(secret.into_owned()); } diff --git a/crates/directory/src/backend/sql/mod.rs b/crates/directory/src/backend/sql/mod.rs index 1faf3c7e..a4f08678 100644 --- a/crates/directory/src/backend/sql/mod.rs +++ b/crates/directory/src/backend/sql/mod.rs @@ -25,7 +25,7 @@ pub(crate) struct SqlMappings { query_verify: String, query_expand: String, column_description: String, - column_secret: String, + column_secret: Vec, column_quota: String, column_type: String, }