From 870f0d0932233df402101dc5fae14ffa96930846 Mon Sep 17 00:00:00 2001 From: Stefan Melmuk Date: Tue, 25 Oct 2022 22:21:22 +0200 Subject: [PATCH] validate billing_email on save --- Cargo.lock | 4 ++++ Cargo.toml | 1 + src/db/models/organization.rs | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/Cargo.lock b/Cargo.lock index 576373df..b9e030b7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -699,6 +699,9 @@ name = "email_address" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1b32a7a2580c4473f10f66b512c34bdd7d33c5e3473227ca833abdb5afe4809" +dependencies = [ + "serde", +] [[package]] name = "encoding_rs" @@ -3162,6 +3165,7 @@ dependencies = [ "diesel", "diesel_migrations", "dotenvy", + "email_address", "fern", "futures", "governor", diff --git a/Cargo.toml b/Cargo.toml index 6051c385..717b32c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -110,6 +110,7 @@ url = "2.3.1" # Email librariese-Base, Update crates and small change. lettre = { version = "0.10.1", features = ["smtp-transport", "builder", "serde", "tokio1-native-tls", "hostname", "tracing", "tokio1"], default-features = false } percent-encoding = "2.2.0" # URL encoding library used for URL's in the emails +email_address = "0.2.3" # Template library handlebars = { version = "4.3.5", features = ["dir_source"] } diff --git a/src/db/models/organization.rs b/src/db/models/organization.rs index 614eb79d..0c4cadc4 100644 --- a/src/db/models/organization.rs +++ b/src/db/models/organization.rs @@ -217,6 +217,10 @@ use crate::error::MapResult; /// Database methods impl Organization { pub async fn save(&self, conn: &mut DbConn) -> EmptyResult { + if !email_address::EmailAddress::is_valid(self.billing_email.trim()) { + err!(format!("BillingEmail {} is not a valid email address", self.billing_email.trim())) + } + for user_org in UserOrganization::find_by_org(&self.uuid, conn).await.iter() { User::update_uuid_revision(&user_org.user_uuid, conn).await; }