|
@ -558,9 +558,10 @@ impl Config { |
|
|
self.update_config(builder) |
|
|
self.update_config(builder) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// Tests whether an email's domain is in signups_domains_whitelist.
|
|
|
/// Tests whether an email's domain is allowed. A domain is allowed if it
|
|
|
/// Returns false if no whitelist is set.
|
|
|
/// is in signups_domains_whitelist, or if no whitelist is set (so there
|
|
|
pub fn is_email_domain_whitelisted(&self, email: &str) -> bool { |
|
|
/// are no domain restrictions in effect).
|
|
|
|
|
|
pub fn is_email_domain_allowed(&self, email: &str) -> bool { |
|
|
let e: Vec<&str> = email.rsplitn(2, '@').collect(); |
|
|
let e: Vec<&str> = email.rsplitn(2, '@').collect(); |
|
|
if e.len() != 2 || e[0].is_empty() || e[1].is_empty() { |
|
|
if e.len() != 2 || e[0].is_empty() || e[1].is_empty() { |
|
|
warn!("Failed to parse email address '{}'", email); |
|
|
warn!("Failed to parse email address '{}'", email); |
|
@ -569,7 +570,7 @@ impl Config { |
|
|
let email_domain = e[0].to_lowercase(); |
|
|
let email_domain = e[0].to_lowercase(); |
|
|
let whitelist = self.signups_domains_whitelist(); |
|
|
let whitelist = self.signups_domains_whitelist(); |
|
|
|
|
|
|
|
|
!whitelist.is_empty() && whitelist.split(',').any(|d| d.trim() == email_domain) |
|
|
whitelist.is_empty() || whitelist.split(',').any(|d| d.trim() == email_domain) |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// Tests whether signup is allowed for an email address, taking into
|
|
|
/// Tests whether signup is allowed for an email address, taking into
|
|
@ -577,7 +578,7 @@ impl Config { |
|
|
pub fn is_signup_allowed(&self, email: &str) -> bool { |
|
|
pub fn is_signup_allowed(&self, email: &str) -> bool { |
|
|
if !self.signups_domains_whitelist().is_empty() { |
|
|
if !self.signups_domains_whitelist().is_empty() { |
|
|
// The whitelist setting overrides the signups_allowed setting.
|
|
|
// The whitelist setting overrides the signups_allowed setting.
|
|
|
self.is_email_domain_whitelisted(email) |
|
|
self.is_email_domain_allowed(email) |
|
|
} else { |
|
|
} else { |
|
|
self.signups_allowed() |
|
|
self.signups_allowed() |
|
|
} |
|
|
} |
|
|