private void validarBtn_Click(object sender, EventArgs e) { String consultaUsuario = "SELECT ID_Usuario, Username, Password, Pass_Temporal, Habilitado " + "FROM AEFI.TL_Usuario " + "WHERE Username = @Username"; String consultaRoles = "SELECT Descripcion " + "FROM AEFI.TL_Rol r " + "JOIN AEFI.TL_Usuario_Por_Rol x ON (x.ID_Rol = r.ID_Rol) " + "JOIN AEFI.TL_Usuario u ON (u.ID_Usuario = x.ID_usuario) " + "WHERE Username = @Username AND r.Activo = 1"; try { conexion.Open(); SqlCommand comando = new SqlCommand(consultaUsuario, conexion); comando.Parameters.Add(new SqlParameter("@Username", txbUsuario.Text)); SqlDataReader reader = comando.ExecuteReader(); // chequeo que exista el usuario ingresado if (!reader.HasRows) { throw new Excepciones("Usuario inexistente"); } else { reader.Read(); int idUsuario = Convert.ToInt32(reader["ID_Usuario"]); bool primerIngreso = Convert.ToBoolean(reader["Pass_Temporal"]); bool habilitado = Convert.ToBoolean(reader["Habilitado"]); string usuario = reader["Username"].ToString(); string contrasena = reader["Password"].ToString(); reader.Close(); if (!contrasena.Equals(BaseDeDatos.cifrar256(txbContrasena.Text))) { if (usuarioVerificar == null || usuarioVerificar == usuario) { contador--; } else { contador = 2; } usuarioVerificar = usuario; throw new Excepciones("Contraseña incorrecta"); } if (!habilitado) { throw new Excepciones("Usuario inhabilitado"); } if (primerIngreso) { MessageBox.Show("Primer Ingreso. Modifique su contraseña", "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); NuevaClave ingreso = new NuevaClave(usuario); this.Hide(); ingreso.ShowDialog(); this.Close(); } txbContrasena.Enabled = false; // se cargan las variables globales del sistema Program.idUsuario = idUsuario; Program.usuario = usuario; entrarBtn.Enabled = true; // cargo los roles del usuario logeado que puede elegir comando = new SqlCommand(consultaRoles, conexion); comando.Parameters.Add(new SqlParameter("@Username", usuario)); reader = comando.ExecuteReader(); // cxbRol.Items.Clear(); if (reader.HasRows) { while (reader.Read()) { cxbRol.Items.Add(reader["Descripcion"].ToString()); cxbRol.Enabled = true; } reader.Close(); cxbRol.SelectedIndex = 0; } else { reader.Close(); MessageBox.Show("No tiene roles asignados", "", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } } } catch (Excepciones exc) { MessageBox.Show(exc.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); // si ocurrieron 3 intentos fallidos en ingresar la contraseña se inhabilita al usuario if (contador == 0) { string consultaInhabilitar = "UPDATE AEFI.TL_Usuario" + "SET habilitado = 0 " + "WHERE username = @usuario"; SqlCommand comandoInhabilitar = new SqlCommand(consultaInhabilitar, conexion); comandoInhabilitar.Parameters.Add(new SqlParameter("@usuario", txbUsuario.Text)); comandoInhabilitar.ExecuteNonQuery(); MessageBox.Show("El usuario ha sido inhabilitado por ingresos invalidos", "", MessageBoxButtons.OK, MessageBoxIcon.Error); } } catch (SqlException exc) { MessageBox.Show(exc.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { conexion.Close(); } }
private void btnNuevaClave_Click(object sender, EventArgs e) { NuevaClave i = new NuevaClave(Convert.ToString(Program.idUsuario)); this.Hide(); i.ShowDialog(); this.Close(); }