Merge pull request #3592 from sbwalker/dev

refactor logic related to domain filtering for emails during external login
This commit is contained in:
Shaun Walker 2023-12-21 15:55:07 -05:00 committed by GitHub
commit b0a079dce9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -205,6 +205,10 @@ namespace Oqtane.Extensions
{ {
email = item[emailClaimType].ToString().ToLower(); email = item[emailClaimType].ToString().ToLower();
} }
else
{
id = ""; // if email is not valid we will assume id is not valid
}
} }
} }
if (!string.IsNullOrEmpty(id)) if (!string.IsNullOrEmpty(id))
@ -290,6 +294,10 @@ namespace Oqtane.Extensions
{ {
email = context.Principal.FindFirstValue(emailClaimType); email = context.Principal.FindFirstValue(emailClaimType);
} }
else
{
id = ""; // if email is not valid we will assume id is not valid
}
} }
// validate user // validate user
@ -610,23 +618,27 @@ namespace Oqtane.Extensions
private static bool EmailValid(string email, string domainfilter) private static bool EmailValid(string email, string domainfilter)
{ {
if (!string.IsNullOrEmpty(email) && email.Contains("@") && email.Contains(".")) if (!string.IsNullOrEmpty(email))
{ {
var domains = domainfilter.ToLower().Split(',', StringSplitOptions.RemoveEmptyEntries); if (email.Contains("@") && email.Contains("."))
foreach (var domain in domains)
{ {
if (domain.StartsWith("!")) var domains = domainfilter.ToLower().Split(',', StringSplitOptions.RemoveEmptyEntries);
foreach (var domain in domains)
{ {
if (email.ToLower().Contains(domain.Substring(1))) return false; if (domain.StartsWith("!"))
} {
else if (email.ToLower().Contains(domain.Substring(1))) return false;
{ }
if (!email.ToLower().Contains(domain)) return false; else
{
if (!email.ToLower().Contains(domain)) return false;
}
} }
return true;
} }
return true; return false;
} }
return false; return (string.IsNullOrEmpty(domainfilter)); // email is optional unless domain filter is specified
} }
} }
} }