mirror of
https://github.com/bitwarden/server.git
synced 2025-07-02 00:22:50 -05:00
Refactor email attributes (#1458)
* Add StrictEmailAddress attribute * Remove duplicate checks, use attributes instead * Rename EmailAddressListAttribute
This commit is contained in:
30
src/Core/Utilities/StrictEmailAddressAttribute.cs
Normal file
30
src/Core/Utilities/StrictEmailAddressAttribute.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace Bit.Core.Utilities
|
||||
{
|
||||
public class StrictEmailAddressAttribute : ValidationAttribute
|
||||
{
|
||||
public StrictEmailAddressAttribute()
|
||||
: base("The {0} field is not a valid e-mail address.")
|
||||
{}
|
||||
|
||||
public override bool IsValid(object value)
|
||||
{
|
||||
var emailAddress = value?.ToString();
|
||||
if (emailAddress == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
var illegalChars = @"[\s<>()]";
|
||||
if (Regex.IsMatch(emailAddress, illegalChars))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return new EmailAddressAttribute().IsValid(emailAddress);
|
||||
}
|
||||
}
|
||||
}
|
@ -4,11 +4,11 @@ using System.Linq;
|
||||
|
||||
namespace Bit.Core.Utilities
|
||||
{
|
||||
public class EmailAddressListAttribute : ValidationAttribute
|
||||
public class StrictEmailAddressListAttribute : ValidationAttribute
|
||||
{
|
||||
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
|
||||
{
|
||||
var emailAttribute = new EmailAddressAttribute();
|
||||
var strictEmailAttribute = new StrictEmailAddressAttribute();
|
||||
var emails = value as IList<string>;
|
||||
|
||||
if (!emails?.Any() ?? true)
|
||||
@ -24,7 +24,7 @@ namespace Bit.Core.Utilities
|
||||
for (var i = 0; i < emails.Count(); i++)
|
||||
{
|
||||
var email = emails.ElementAt(i);
|
||||
if (!emailAttribute.IsValid(email) || email.Contains(" ") || email.Contains("<"))
|
||||
if (!strictEmailAttribute.IsValid(email))
|
||||
{
|
||||
return new ValidationResult($"Email #{i + 1} is not valid.");
|
||||
}
|
Reference in New Issue
Block a user