diff options
| author | Syndamia <kamen.d.mladenov@protonmail.com> | 2020-12-16 11:26:32 +0200 |
|---|---|---|
| committer | Syndamia <kamen.d.mladenov@protonmail.com> | 2020-12-16 11:26:32 +0200 |
| commit | 49aa10355280a614da01cebb68c96dfdd602ac6f (patch) | |
| tree | 36a7fdf0d7499c1896272bb1a66aee4ff0b349c2 /src | |
| parent | d80b44003ca03cd09bf28278bf2e243581c00332 (diff) | |
| download | DevHive-49aa10355280a614da01cebb68c96dfdd602ac6f.tar DevHive-49aa10355280a614da01cebb68c96dfdd602ac6f.tar.gz DevHive-49aa10355280a614da01cebb68c96dfdd602ac6f.zip | |
Fixed user input data validation upon registration
Diffstat (limited to 'src')
4 files changed, 65 insertions, 36 deletions
diff --git a/src/DevHive.Data/Models/User.cs b/src/DevHive.Data/Models/User.cs index a92e94d..75015e8 100644 --- a/src/DevHive.Data/Models/User.cs +++ b/src/DevHive.Data/Models/User.cs @@ -8,60 +8,27 @@ namespace DevHive.Data.Models [Table("Users")] public class User : IdentityUser<Guid>, IModel { - private string _firstName; - private string _lastName; - [Required] [Range(3, 50)] [Display(Name = "Username")] public override string UserName { get => base.UserName; - set - { - ValidateString("Username", 3, 50, value, true); - base.UserName = value; - } + set => base.UserName = value; } [Required] [Range(3, 30)] - public string FirstName - { - get => this._firstName; - set - { - ValidateString("FirstName", 3, 30, value, false); - this._firstName = value; - } - } + public string FirstName { get; set; } [Required] [Range(3, 30)] - public string LastName - { - get => this._lastName; - set - { - ValidateString("LastName", 3, 30, value, false); - this._lastName = value; - } - } + public string LastName { get; set; } public string ProfilePicture { get; set; } public string Role { get; set; } //public List<User> Friends { get; set; } - - private static void ValidateString(string propertyName, int minLength, int maxLength, string value, bool canBeDigit) - { - if (value.Length < minLength || value.Length > maxLength) - throw new ArgumentException($"{propertyName} length cannot be less than {minLength} and more than {maxLength}."); - - foreach (char ch in value) - if (!Char.IsLetter(ch) && !(Char.IsDigit(ch) && canBeDigit)) - throw new ArgumentException($"{propertyName} contains invalid characters."); - } } } diff --git a/src/DevHive.Web/Models/Identity/User/RegisterWebModel.cs b/src/DevHive.Web/Models/Identity/User/RegisterWebModel.cs index aafdf61..c82263e 100644 --- a/src/DevHive.Web/Models/Identity/User/RegisterWebModel.cs +++ b/src/DevHive.Web/Models/Identity/User/RegisterWebModel.cs @@ -1,11 +1,33 @@ +using System.ComponentModel.DataAnnotations; +using DevHive.Web.Models.Identity.Validation; + namespace DevHive.Web.Models.Identity.User { public class RegisterWebModel { + [Required] + [MinLength(3)] + [MaxLength(50)] + [OnlyAlphanumerics(ErrorMessage = "Username can only contain letters and digits!")] public string UserName { get; set; } + + [Required] + [EmailAddress] public string Email { get; set; } + + [Required] + [MinLength(3)] + [MaxLength(30)] + [OnlyLetters(ErrorMessage = "First name can only contain letters!")] public string FirstName { get; set; } + + [Required] + [MinLength(3)] + [MaxLength(30)] + [OnlyLetters(ErrorMessage = "Last name can only contain letters!")] public string LastName { get; set; } + + [Required] public string Password { get; set; } } } diff --git a/src/DevHive.Web/Models/Identity/Validation/OnlyAlphanumericsModelValidation.cs b/src/DevHive.Web/Models/Identity/Validation/OnlyAlphanumericsModelValidation.cs new file mode 100644 index 0000000..5c8c66c --- /dev/null +++ b/src/DevHive.Web/Models/Identity/Validation/OnlyAlphanumericsModelValidation.cs @@ -0,0 +1,20 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace DevHive.Web.Models.Identity.Validation +{ + public class OnlyAlphanumerics : ValidationAttribute + { + public override bool IsValid(object value) + { + var stringValue = (string)value; + + foreach (char ch in stringValue) + { + if (!Char.IsLetterOrDigit(ch)) + return false; + } + return true; + } + } +} diff --git a/src/DevHive.Web/Models/Identity/Validation/OnlyLettersModelValidation.cs b/src/DevHive.Web/Models/Identity/Validation/OnlyLettersModelValidation.cs new file mode 100644 index 0000000..29a995a --- /dev/null +++ b/src/DevHive.Web/Models/Identity/Validation/OnlyLettersModelValidation.cs @@ -0,0 +1,20 @@ +using System; +using System.ComponentModel.DataAnnotations; + +namespace DevHive.Web.Models.Identity.Validation +{ + public class OnlyLetters : ValidationAttribute + { + public override bool IsValid(object value) + { + var stringValue = (string)value; + + foreach (char ch in stringValue) + { + if (!Char.IsLetter(ch)) + return false; + } + return true; + } + } +} |
