me encuentro algo estancado sobre una validacion tengo la siguiente validacion: namespace Oronet.Web.Areas.Enrolamiento.Models { public class Validacion { public ValPass Validacioncontrasena(ValPass row) {
try
{
row.Code = "danger";
var mayuscula = false;
var minuscula = false;
var numero = false;
var caracter_raro = false;
Regex regex1 = new Regex(@"^(?=.*userid)\S{3,16}$");
Regex regex2 = new Regex(row.Usuario);
int i = 0;
int a1 = 0;
// Regex regex = new Regex(@"^(?=\S*?[A-Z])(?=\S*?[a-z])(?=\S*?[0-9])(?=\S*?[!-/:-@[-`])\S{3,16}$");// valida ingreso de numeros, letras (?!.*(.)\1)
if (row != null && row.Usuario != "" && row.Pass != "")
{
if (regex1.IsMatch(row.Pass) == false || regex2.IsMatch(row.Pass) == false)
{
for (int j = 0; j < row.Pass.Length; j++) {
var c0a = row.Pass[j];
var c1a = Encoding.ASCII.GetBytes(c0a.ToString())[0];
if (row.Pass.Length >= 0 && row.Pass.Length <= 3)
{
if (c1a >= 97 && c1a <= 122)
{
// minuscula
minuscula = true;
}
else if (c1a >= 48 && c1a <= 57)
{
// numeros
numero = true;
}
else if (c1a >= 65 && c1a <= 90)
{
//letras mayusculas
mayuscula = true;
}
else
{
// caracteres especiales
caracter_raro = true;
}
}
else if (row.Pass.Length >= 4 && row.Pass.Length <= 7)
{
if (c1a >= 97 && c1a <= 122)
{
// minuscula
minuscula = true;
}
else if (c1a >= 48 && c1a <= 57)
{
//numeros
numero = true;
}
else if (c1a >= 65 && c1a <= 90)
{
//letras mayusculas
mayuscula = true;
}
else
{
// caracteres especiales
caracter_raro = true;
}
}
else if (row.Pass.Length >= 8 && row.Pass.Length <= 16)
{
if (c1a >= 97 && c1a <= 122)
{
minuscula = true;
}
else if (c1a >= 48 && c1a <= 57)
{
numero = true;
}
else if (c1a >= 65 && c1a <= 90)
{
mayuscula = true;
}
else
{
// caracteres especiales
caracter_raro = true;
}
}
}
for (i = 0; i < row.Pass.Length - 1; i++)
{
var c0 = row.Pass[i];
var ca = row.Pass[i + 1];
var c1 = Encoding.ASCII.GetBytes(c0.ToString())[0];
var c2 = c1 + 1;
var c3 = (char)c2;
var mayc3 = char.ToUpper(c3);
var minc3 = char.ToLower(c3);
var mayca = char.ToUpper(ca);
var minca = char.ToLower(ca);
if (mayc3 == ca || minc3 == ca)
{
row.Mensaje = "No se puede ingresar caracter consecutivo";
row.Code = "danger";
a1 = 1;
mayuscula = false;
minuscula = false;
numero = false;
caracter_raro = false;
break;
}
if (c0 == mayca || c0 == minca)
{
row.Mensaje = "No se puede ingresar caracter repetidos";
row.Code = "danger";
a1 = 1;
mayuscula = false;
minuscula = false;
numero = false;
caracter_raro = false;
break;
}
else if (a1 != 1)
{
if (row.Pass.Length >= 1 && row.Pass.Length <= 3)
{
if (mayuscula == true && minuscula == true && numero == true)
{
row.Code = "danger";
}
else if (mayuscula == true && minuscula == true && caracter_raro == true)
{
row.Code = "danger";
}
else if (mayuscula == true && numero == true && caracter_raro == true)
{
row.Code = "danger";
}
else
{
row.Code = "danger";
}
}
else if (row.Pass.Length >= 4 && row.Pass.Length <= 7)
{
if (regex1.IsMatch(row.Pass) != true || regex2.IsMatch(row.Pass) != true)
{
if (mayuscula == true && minuscula == true && numero == true && caracter_raro == true)
{
row.Code = "warning";
}
else
{
row.Code = "danger";
}
}
else
{
row.Mensaje = "no se puede ingresar el usuario";
row.Code = "danger";
}
}
else if (row.Pass.Length >= 8 && row.Pass.Length <= 16)
{
if (mayuscula == true && minuscula == true && numero == true && caracter_raro == true)
{
row.Code = "success";
}
else
{
row.Code = "danger";
}
}
else
{
row.Mensaje = "contraseña invalida";
row.Code = "danger";
}
}
}
}
else
{
row.Mensaje = "contraseña invalida";
row.Code = "danger";
}
}
else {
row.Mensaje = "no se puede ingresar el usuario";
row.Code = "danger";
}
if (row.Pass == row.confipass)
{
row.a1 = 1;
}
row.Usuario = "";
row.Pass = "";
row.confipass = "";
}
catch (Exception ex)
{
row.Error = false;
row.Mensaje = ex.Message;
}
return row;
}
}
}
su clase para guardar estos datos luce asi: namespace Oronet.Web.Areas.Enrolamiento.Models { public class ValPass { public string Pass { set; get; } public string Usuario { set; get; } public string Code { set; get; } public string Mensaje { set; get; } public bool Error { set; get; } public string confipass { set; get; } public int a1 { set; get; } } }
mi problema es con esta linea:
if (regex1.IsMatch(row.Pass) == false || regex2.IsMatch(row.Pass) == false) se supone que al declarar estos regex1 y regex2 de esta forma
Regex regex1 = new Regex(@"^(?=.*userid)\S{3,16}$"); le digo que en el campo contraseña si existe la palabra userid
Regex regex2 = new Regex(row.Usuario); y aqui lo mismo busco que coincida es decir, que el nombre de usuario no este en el campo contraseña pero esta linea no funciona, de existir las dos coincidencias que sea verdad entra por aqui
else
{
row.Mensaje = "contraseña invalida";
row.Code = "danger";
}
lo que trato de hacer es que al crear nuevo usuario si el usuario digita en el campo contraseña userid o elnombre de usuario que escoga, asi automaticamente, marque rojo
Aucun commentaire:
Enregistrer un commentaire