aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSyndamia <kamen.d.mladenov@protonmail.com>2020-12-16 11:26:32 +0200
committerSyndamia <kamen.d.mladenov@protonmail.com>2020-12-16 11:26:32 +0200
commit49aa10355280a614da01cebb68c96dfdd602ac6f (patch)
tree36a7fdf0d7499c1896272bb1a66aee4ff0b349c2 /src
parentd80b44003ca03cd09bf28278bf2e243581c00332 (diff)
downloadDevHive-49aa10355280a614da01cebb68c96dfdd602ac6f.tar
DevHive-49aa10355280a614da01cebb68c96dfdd602ac6f.tar.gz
DevHive-49aa10355280a614da01cebb68c96dfdd602ac6f.zip
Fixed user input data validation upon registration
Diffstat (limited to 'src')
-rw-r--r--src/DevHive.Data/Models/User.cs39
-rw-r--r--src/DevHive.Web/Models/Identity/User/RegisterWebModel.cs22
-rw-r--r--src/DevHive.Web/Models/Identity/Validation/OnlyAlphanumericsModelValidation.cs20
-rw-r--r--src/DevHive.Web/Models/Identity/Validation/OnlyLettersModelValidation.cs20
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;
+ }
+ }
+}