private void btnAceptar_Click(object sender, EventArgs e) { string msg = string.Empty; errorProvider1.SetError(rtxtUsuario, ""); errorProvider1.SetError(rtxtContrasenia, ""); try { #region Validaciones Acceso Al Sistema if (rtxtUsuario.Text.Trim().Length.Equals(0)) { msg = "- Ingrese el usuario" + Environment.NewLine; errorProvider1.SetError(rtxtUsuario, "Ingrese el usuario"); } if (rtxtContrasenia.Text.Trim().Length.Equals(0)) { msg += "- Ingrese la contraseña"; errorProvider1.SetError(rtxtContrasenia, "Ingrese la contraseña"); } //SE OBTIENE EL ID DE LA EMPRESA SELECCIONADA Empresa = int.Parse(cboEmpresas.SelectedValue.ToString()); if (msg.Length.Equals(0)) { WCF_Seguridad.Hersan_SeguridadClient wcf = new WCF_Seguridad.Hersan_SeguridadClient(); ValidaIngresoBE val = wcf.ValidaUsuario(rtxtUsuario.Text.Trim(), new EncriptadorBP().EncriptarTexto(rtxtContrasenia.Text.Trim())); if (val.EsIngresoValido) { BaseWinBP.ListadoMenu = wcf.ObtenerMenuUsuario(rtxtUsuario.Text.Trim()); BaseWinBP.UsuarioLogueado = wcf.ObtieneDatosUsuario(rtxtUsuario.Text.Trim()); this.DialogResult = DialogResult.OK; this.Close(); } else { RadMessageBox.Show(val.ErrorIngreso, this.Text, MessageBoxButtons.OK, RadMessageIcon.Info); this.DialogResult = DialogResult.None; } } else { RadMessageBox.Show("Datos Obligatorios" + Environment.NewLine + msg, this.Text, MessageBoxButtons.OK, RadMessageIcon.Info); this.DialogResult = DialogResult.None; } #endregion } catch (Exception ex) { RadMessageBox.Show("Ocurrio un error al validar al usuario:" + ex.Message, this.Text, MessageBoxButtons.OK, RadMessageIcon.Info); this.DialogResult = DialogResult.None; } }
/// <summary> /// Verifica si hay bloqueo del usuario /// </summary> /// <param name="nomUsr">Cuenta usuario</param> /// <returns></returns> public ValidaIngresoBE ObtienBloqueoUsuario(string nomUsr) { ValidaIngresoBE val = new ValidaIngresoBE(); val.ErrorIngreso = string.Empty; try { using (SqlConnection conn = new SqlConnection(RecuperarCadenaDeConexion())) { conn.Open(); using (SqlCommand cmd = new SqlCommand(CSTR_SP_OBTIENEBLOQUEOUSUARIO, conn)) { cmd.Parameters.AddWithValue("@Usuario", nomUsr); cmd.CommandType = CommandType.StoredProcedure; using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { if (reader["usu_FecBloqueo"] != System.DBNull.Value) { DateTime dtFActual = DateTime.Parse(reader["FECACTUAL"].ToString()); DateTime dtFDBlo = DateTime.Parse(reader["usu_FecDesBloq"].ToString()); double res = Math.Ceiling(dtFDBlo.Subtract(dtFActual).TotalMinutes); if (res > 0) { val.EsUsuarioBloqueado = true; val.ErrorIngreso = "Cuenta bloqueda. ¿Desea Desbloquear?"; } } } } } } return(val); } catch { return(val); } }
/// <summary> /// Valida que las credenciales del usuario sean correctas /// </summary> /// <param name="nomUsr">Cuenta usuario</param> /// <param name="Pswd">Contraseña Encriptada</param> /// <returns></returns> public ValidaIngresoBE ValidaUsuario(string nomUsr, string Pswd) { ValidaIngresoBE val = new ValidaIngresoBE(); bool valida = false; string pssEncr = string.Empty; int intentos = int.Parse(ConfigurationManager.AppSettings["NumInten"].ToString()); int minutos = int.Parse(ConfigurationManager.AppSettings["MinBloqueo"].ToString()); try { using (SqlConnection conn = new SqlConnection(RecuperarCadenaDeConexion())) { conn.Open(); using (SqlCommand cmd = new SqlCommand(CSTR_SP_USUARIOS_DATOSVALIDACION, conn)) { cmd.Parameters.AddWithValue("@Usuario", nomUsr); cmd.CommandType = CommandType.StoredProcedure; using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { pssEncr = reader["USU_Contrasenia"].ToString(); } } } if (!pssEncr.Equals(string.Empty)) { EncriptadorDA enc = new EncriptadorDA(); string clvRecibida = enc.DesencriptarTexto(Pswd); string clvAlmacenada = enc.DesencriptarTexto(pssEncr); if (!clvRecibida.Equals(string.Empty)) { valida = clvRecibida.Equals(clvAlmacenada); } if (intentos > 0) { using (SqlCommand cmd = new SqlCommand(CSTR_SP_BLOQUEODESBLOQUEO, conn)) { cmd.Parameters.AddWithValue("@Usuario", nomUsr); cmd.Parameters.AddWithValue("@minutos", minutos); cmd.Parameters.AddWithValue("@intentos", intentos); if (valida) { valida = !((ValidaIngresoBE)ObtienBloqueoUsuario(nomUsr)).EsUsuarioBloqueado; } cmd.Parameters.Add("@bloquea", SqlDbType.Bit).Value = !valida; cmd.CommandType = CommandType.StoredProcedure; if (valida) { cmd.ExecuteNonQuery(); } else { using (SqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { int numinten = 0; int.TryParse(reader["usu_NumInten"].ToString(), out numinten); if (reader["usu_FecBloqueo"] != System.DBNull.Value) { DateTime dtFActual = DateTime.Parse(reader["FECACTUAL"].ToString()); DateTime dtFDBlo = DateTime.Parse(reader["usu_FecDesBloq"].ToString()); val.EsUsuarioBloqueado = true; double res = Math.Ceiling(dtFDBlo.Subtract(dtFActual).TotalMinutes); val.ErrorIngreso = "La cuenta se encuentra bloqueda, intentelo de nuevo en " + res + (res > 1 ? " minutos." : " minuto."); } else { val.ErrorIngreso = (intentos - numinten) > 0 ? "Usuario y/o contraseña invalidos. la cuenta será bloqueada al intento " + intentos.ToString() + ". Intento " + numinten.ToString() + " de " + intentos.ToString() : "Usuario y/o contraseña invalidos. la cuenta esta bloqueada."; } } } } } } } if (valida) { val.EsIngresoValido = true; val.ErrorIngreso = string.Empty; } } return(val); } catch { return(val); } }
private void btnAceptar_Click(object sender, EventArgs e) { try { UsuariosBE Usuario = BaseWinBP.UsuarioLogueado; errorProvider1.SetError(rtxtUsuario, ""); errorProvider1.SetError(rtxtContrasenia, ""); errorProvider1.SetError(txtNuevaContra, ""); string msg = string.Empty; if (rtxtUsuario.Text.Trim().Length.Equals(0)) { msg = "- Ingrese la contraseña anterior" + Environment.NewLine; errorProvider1.SetError(rtxtUsuario, "Ingrese la contraseña anterior"); } if (rtxtContrasenia.Text.Trim().Length.Equals(0)) { msg += "- Ingrese la nueva contraseña" + Environment.NewLine; errorProvider1.SetError(rtxtContrasenia, "Ingrese la nueva contraseña"); } if (txtNuevaContra.Text.Trim().Length.Equals(0)) { msg += "- Repita la nueva contraseña" + Environment.NewLine; errorProvider1.SetError(rtxtContrasenia, "Repipta la nueva contraseña"); } if (!rtxtContrasenia.Text.Trim().Equals(txtNuevaContra.Text.Trim())) { msg += "- Las contraseñas no coinciden"; errorProvider1.SetError(rtxtContrasenia, "Las contraseñas no coinciden"); } if (msg.Length.Equals(0)) { if (RadMessageBox.Show("Esta acción cambiará la contraseña y cerrará el sistema\nDesea continuar...?", this.Text, MessageBoxButtons.YesNo, RadMessageIcon.Question) == System.Windows.Forms.DialogResult.Yes) { //WCF_Seguridad.SIAC_SeguridadClient wcf = new WCF_Seguridad.SIAC_SeguridadClient(); //Se valida primero el usuario ValidaIngresoBE val = wcf.ValidaUsuario(Usuario.Usuario, new EncriptadorBP().EncriptarTexto(rtxtUsuario.Text.Trim())); if (val.EsIngresoValido) { //Se cambia el password y se sale de la aplicación Usuario.Contrasena = new EncriptadorBP().EncriptarTexto(txtNuevaContra.Text.Trim()); if (wcf.CambiaContrasenia(Usuario) == 0) { RadMessageBox.Show("Ocurrió un error, la contraseña no puede ser cambiada", this.Text, MessageBoxButtons.OK, RadMessageIcon.Exclamation); this.Close(); } else { RadMessageBox.Show("Contraseña cambiada correctamente, ahora el sistema se cerrará", this.Text, MessageBoxButtons.OK, RadMessageIcon.Info); Application.Exit(); } } else { RadMessageBox.Show("La contraseña capturada es incorrecta\ncorrija e intente de nuevo", this.Text, MessageBoxButtons.OK, RadMessageIcon.Info); } } else { this.Close(); } } else { RadMessageBox.Show("Datos Obligatorios" + Environment.NewLine + msg, this.Text, MessageBoxButtons.OK, RadMessageIcon.Info); this.DialogResult = DialogResult.None; } } catch (Exception ex) { throw ex; } }