Exemplo n.º 1
0
        /// <summary>
        /// Método que valida la contraseña del usuario.
        /// </summary>
        /// <param name="oUsuario"></param>
        /// <returns></returns>
        public RespuestaUsuario ValidarContrasenna(Usuario oUsuario)
        {
            var oRespuesta = new RespuestaUsuario {
                Respuesta = new Respuesta()
                {
                    CodMensaje = Respuesta.CodError
                }
            };

            try
            {
                var catalogoLn = new CatalogoLogicaNegocio();

                //desencriptamos la contraseña enviada
                string clave = oEncriptador.DesEncriptar(oUsuario.Clave);

                /*************  Obtener Longitud *******************/
                var longitudPassword = Convert.ToInt32(catalogoLn.ObtenerCatalogo(new Catalogo()
                {
                    CodigoParametro = Constantes.Catalogo.LongitudPassword
                }).Catalogo.Identificador);
                /*************  Obtener Numeros *******************/
                var cantidadNumeros = Convert.ToInt32(catalogoLn.ObtenerCatalogo(new Catalogo()
                {
                    CodigoParametro = Constantes.Catalogo.CntMinNumPassword
                }).Catalogo.Identificador);
                /*************  Obtener Mayusculas *******************/
                var cantidadMayusculas = Convert.ToInt32(catalogoLn.ObtenerCatalogo(new Catalogo()
                {
                    CodigoParametro = Constantes.Catalogo.CntMinMayusculasPassword
                }).Catalogo.Identificador);
                /*************  Obtener Simbolos *******************/
                var cantidadSimbolos = Convert.ToInt32(catalogoLn.ObtenerCatalogo(new Catalogo()
                {
                    CodigoParametro = Constantes.Catalogo.CntMinSimbolosPassword
                }).Catalogo.Identificador);


                int contNum = 0; int contMayus = 0; int contSymbol = 0;
                foreach (char c in clave)
                {
                    if (char.IsNumber(c))
                    {
                        contNum++;
                    }
                    else if (char.IsUpper(c))
                    {
                        contMayus++;
                    }
                    else if (char.IsSymbol(c) | char.IsPunctuation(c))
                    {
                        contSymbol++;
                    }
                }
                var oMensajes = new List <string>();
                //Valida la cantidad mínima de caracteres
                if (oUsuario.Clave.Length < longitudPassword)
                {
                    oMensajes.Add(string.Format(MensajesValidaciones.PassMinCaracteres, longitudPassword));
                }
                //Valida la cantidad mínima de números
                if (contNum < cantidadNumeros)
                {
                    oMensajes.Add(string.Format(MensajesValidaciones.PassMinNumeros, cantidadNumeros));
                }
                //Valida la cantidad mínima de mayúsculas
                if (contMayus < cantidadMayusculas)
                {
                    oMensajes.Add(string.Format(MensajesValidaciones.PassMinMayusculas, cantidadMayusculas));
                }
                //Valida la cantidad mínima de símbolos
                if (contSymbol < cantidadSimbolos)
                {
                    oMensajes.Add(string.Format(MensajesValidaciones.PassMinSimbolos, cantidadSimbolos));
                }

                if (oMensajes.Count != 0)
                {
                    //Contraseña incorrecta
                    oRespuesta.Respuesta.Mensaje  = oMensajes.FirstOrDefault();
                    oRespuesta.Respuesta.Mensajes = oMensajes;
                    return(oRespuesta);
                }

                //contraseña correcta
                return(new RespuestaUsuario()
                {
                    Respuesta = new Respuesta()
                    {
                        CodMensaje = Respuesta.CodExitoso
                    }
                });
            }
            catch (Exception oException)
            {
                ControlExcepciones.ControlExcepciones.ManejoExcepciones(oException, oUsuario);

                BitacoraLogicaNegocios.RegistrarBitacora(MENSAJES_SISTEMA.ErrorExcepcion,
                                                         TraceData.Utilities.Enums.TypeTrace.Exception, oException, MethodBase.GetCurrentMethod().Name);

                return(new RespuestaUsuario {
                    Respuesta = new Respuesta(TipoRespuesta.Excepcion, oException.Message, Respuesta.CodNoValido)
                });
            }
        }