fix vallidation for password and username

This commit is contained in:
2024-08-14 17:52:50 +03:30
parent eced31d841
commit 4a5bfe58bf
3 changed files with 26 additions and 5 deletions

View File

@ -17,68 +17,84 @@ namespace WebApplication1.Controllers
{ {
private newswebappEntities db = new newswebappEntities(); private newswebappEntities db = new newswebappEntities();
private void ValidatePassword(string password, string confirmPassword) private int ValidatePassword(string password, string confirmPassword)
{ {
if (string.IsNullOrWhiteSpace(password)) if (string.IsNullOrWhiteSpace(password))
{ {
ModelState.AddModelError("", "Password cannot be empty"); ModelState.AddModelError("", "Password cannot be empty");
return 1;
} }
else else
{ {
if (password != confirmPassword) if (password != confirmPassword)
{ {
ModelState.AddModelError("", "Passwords don't match"); ModelState.AddModelError("", "Passwords don't match");
return 1;
} }
if (password.Length < 8) if (password.Length < 8)
{ {
ModelState.AddModelError("", "Password must be at least 8 characters long"); ModelState.AddModelError("", "Password must be at least 8 characters long");
return 1;
} }
if (!password.Any(char.IsUpper)) if (!password.Any(char.IsUpper))
{ {
ModelState.AddModelError("", "Password must contain at least one uppercase letter"); ModelState.AddModelError("", "Password must contain at least one uppercase letter");
return 1;
} }
if (!password.Any(char.IsLower)) if (!password.Any(char.IsLower))
{ {
ModelState.AddModelError("", "Password must contain at least one lowercase letter"); ModelState.AddModelError("", "Password must contain at least one lowercase letter");
return 1;
} }
if (!password.Any(char.IsDigit)) if (!password.Any(char.IsDigit))
{ {
ModelState.AddModelError("", "Password must contain at least one digit"); ModelState.AddModelError("", "Password must contain at least one digit");
return 1;
} }
if (!password.Any(ch => !char.IsLetterOrDigit(ch))) if (!password.Any(ch => !char.IsLetterOrDigit(ch)))
{ {
ModelState.AddModelError("", "Password must contain at least one special character"); ModelState.AddModelError("", "Password must contain at least one special character");
return 1;
} }
return 0;
} }
} }
private void ValidateUsername(string username) private int ValidateUsername(string username)
{ {
if (string.IsNullOrWhiteSpace(username)) if (string.IsNullOrWhiteSpace(username))
{ {
ModelState.AddModelError("", "Username cannot be empty"); ModelState.AddModelError("", "Username cannot be empty");
return 1;
} }
else else
{ {
if (username.Length < 3) if (username.Length < 3)
{ {
ModelState.AddModelError("", "Username must be at least 3 characters long"); ModelState.AddModelError("", "Username must be at least 3 characters long");
return 1;
} }
if (username.Length > 20) if (username.Length > 20)
{ {
ModelState.AddModelError("", "Username must not exceed 20 characters"); ModelState.AddModelError("", "Username must not exceed 20 characters");
return 1;
} }
if (!username.All(char.IsLetterOrDigit)) if (!username.All(char.IsLetterOrDigit))
{ {
ModelState.AddModelError("", "Username can only contain letters and digits"); ModelState.AddModelError("", "Username can only contain letters and digits");
return 1;
} }
return 0;
} }
} }
@ -152,8 +168,13 @@ namespace WebApplication1.Controllers
{ {
if (ModelState.IsValid) if (ModelState.IsValid)
{ {
ValidatePassword(user.password, Request.Form["ConfirmPassword"]); var cpass = Request.Form["ConfirmPassword"];
ValidateUsername(user.usename); var valpass = ValidatePassword(user.password, cpass);
var valuser = ValidateUsername(user.usename);
if (valpass == 1 || valuser == 1)
{
return View();
}
//check if the username exists //check if the username exists
var check = db.users.FirstOrDefault(u => u.usename == user.usename); var check = db.users.FirstOrDefault(u => u.usename == user.usename);
//checks username and password field in form //checks username and password field in form

BIN
Media/news/YoUypscYRW.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

View File

@ -47,7 +47,7 @@
<div class="form-group"> <div class="form-group">
<label class="control-label col-md-2">Confirm password</label> <label class="control-label col-md-2">Confirm password</label>
<input type="password" ,name="ConfirmPassword", id="ConfirmPassword", oninput="checkPasswords()" class="form-control" /> <input type="password" name="ConfirmPassword" id="ConfirmPassword" oninput="checkPasswords()" class="form-control" />
<span asp-validation-for="ConfirmPassword" class="text-danger"></span> <span asp-validation-for="ConfirmPassword" class="text-danger"></span>
<span id="passwordMismatch" class="text-danger"></span> <span id="passwordMismatch" class="text-danger"></span>
</div> </div>