public int CrearUsuarioConValores(String username, String password) { query = "NET_A_CERO.pr_crear_usuario_con_valores"; parametros.Clear(); parametroOutput = new SqlParameter("@usuario_id", SqlDbType.Int); parametroOutput.Direction = ParameterDirection.Output; parametros.Add(new SqlParameter("@username", username)); parametros.Add(new SqlParameter("@password", HashSha256.getHash(password))); parametros.Add(new SqlParameter("@is_admin", "0")); parametros.Add(parametroOutput); command = QueryBuilder.Instance.build(query, parametros); command.CommandType = CommandType.StoredProcedure; command.ExecuteNonQuery(); return((int)parametroOutput.Value); }
private void botonIngresar_Click(object sender, EventArgs e) { //Validamos que ingrese usuario y contraseña if (this.textBoxUsuario.Text == "") { MessageBox.Show("Debe ingresar un usuario"); return; } if (this.textBoxContaseña.Text == "") { MessageBox.Show("Debe ingresar una contraseña"); return; } // Nos fijamos si el usuario y contraseña existen y esta habilitado String query = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username AND usr_password = @password AND usr_activo = 1"; String usuario = this.textBoxUsuario.Text; // valida contraseña encriptada String contraseña = HashSha256.getHash(this.textBoxContaseña.Text); IList <SqlParameter> parametros = new List <SqlParameter>(); parametros.Add(new SqlParameter("@username", usuario)); parametros.Add(new SqlParameter("@password", contraseña)); SqlDataReader reader = QueryHelper.Instance.exec(query, parametros); //Chequea el ingreso if (QueryHelper.Instance.readFrom(reader)) { MessageBox.Show("Bienvenido " + reader["usr_usuario"] + "!"); UsuarioSesion.Usuario.nombre = (String)reader["usr_usuario"]; UsuarioSesion.Usuario.id = (Int32)reader["usr_id"]; // Usuario logueado correctamente (intentos fallidos = 0) parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String clearIntentosFallidos = "UPDATE NET_A_CERO.Usuarios SET usr_intentos = 0 WHERE usr_usuario = @username"; QueryBuilder.Instance.build(clearIntentosFallidos, parametros).ExecuteNonQuery(); // Se fija si es el primer inicio de sesion del usuario parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String sesion = "SELECT usr_password FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username"; String primerInicio = (String)QueryBuilder.Instance.build(sesion, parametros).ExecuteScalar(); //El primer inicio la contraseña es fija (OK) if (primerInicio == "565339bc4d33d72817b583024112eb7f5cdf3e5eef0252d6ec1b9c9a94e12bb3") { this.Hide(); new CambiarContrasena().ShowDialog(); this.Close(); } parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String consultaRoles = "SELECT COUNT(rol_id) FROM NET_A_CERO.Usuarios_x_Rol WHERE (SELECT usr_id FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username) = usr_id"; int cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar(); if (cantidadDeRoles > 1) { this.Hide(); new ElegirRol().ShowDialog(); this.Close(); } else { parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String rolDeUsuario = "SELECT r.rol_nombre FROM NET_A_CERO.Roles r, NET_A_CERO.Usuarios_x_Rol ru, NET_A_CERO.Usuarios u WHERE r.rol_id = ru.rol_id AND ru.usr_id = u.usr_id AND u.usr_usuario = @username"; String rolUser = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar(); UsuarioSesion.Usuario.rol = rolUser; if (UsuarioSesion.Usuario.rol == null) { MessageBox.Show("No existen roles para iniciar sesion"); return; } // Para testear si elige bien el rol: MessageBox.Show("Rol: " + UsuarioSesion.Usuario.rol); this.Hide(); new MenuPrincipal().ShowDialog(); this.Close(); } } else { // Se fija si el usuario era correcto parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String buscaUsuario = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username"; SqlDataReader lector = QueryBuilder.Instance.build(buscaUsuario, parametros).ExecuteReader(); if (lector.Read()) { // Se fija si el usuario esta inhabilitado parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); parametros.Add(new SqlParameter("@password", contraseña)); String estaDeshabilitado = "SELECT * FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username AND usr_activo = 0"; SqlDataReader userDeshabilitado = QueryBuilder.Instance.build(estaDeshabilitado, parametros).ExecuteReader(); if (userDeshabilitado.Read()) { MessageBox.Show("El usuario esta deshabilitado"); return; } // Suma un fallido parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String sumaFallido = "UPDATE NET_A_CERO.Usuarios SET usr_intentos = usr_intentos + 1 WHERE usr_usuario = @username"; QueryBuilder.Instance.build(sumaFallido, parametros).ExecuteNonQuery(); // Si es el tercer fallido se deshabilita al usuario parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String cantidadFallidos = "SELECT usr_intentos FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username"; int intentosFallidos = Convert.ToInt32(QueryBuilder.Instance.build(cantidadFallidos, parametros).ExecuteScalar()); if (intentosFallidos == 3) { parametros.Clear(); parametros.Add(new SqlParameter("@username", usuario)); String deshabilitar = "UPDATE NET_A_CERO.Usuarios SET usr_activo = 0 WHERE usr_usuario = @username"; QueryBuilder.Instance.build(deshabilitar, parametros).ExecuteNonQuery(); } MessageBox.Show("Contraseña incorrecta." + '\n' + '\n' + "La contraseña distingue mayusculas y minusculas." + '\n' + '\n' + "Fallidos del usuario: " + intentosFallidos); } else { MessageBox.Show("El usuario no existe"); } } }
private void btnContinuar_Click(object sender, EventArgs e) { if (textBoxContraseña.Text == "") { MessageBox.Show("Debe ingresar una nueva contraseña"); return; } if (textBoxRepetirContraseña.Text == "") { MessageBox.Show("Debe ingresar nuevamenta la contraseña"); return; } if (textBoxContraseña.Text.Length < 8) { MessageBox.Show("La contraseña debe tener por lo menos 8 caracteres"); return; } if (textBoxContraseña.Text != textBoxRepetirContraseña.Text) { MessageBox.Show("La contraseña no coincide, ingrese nuevamente"); textBoxContraseña.Clear(); textBoxRepetirContraseña.Clear(); return; } // Actualiza contraseña IList <SqlParameter> parametros = new List <SqlParameter>(); parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre)); parametros.Add(new SqlParameter("@pass", HashSha256.getHash(textBoxContraseña.Text))); String nuevaPass = "******"; QueryBuilder.Instance.build(nuevaPass, parametros).ExecuteNonQuery(); // Asigna el rol parametros.Clear(); parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre)); String consultaRoles = "SELECT COUNT(rol_id) from NET_A_CERO.Usuarios_x_Rol WHERE (SELECT usr_id FROM NET_A_CERO.Usuarios WHERE usr_usuario = @username) = usr_id"; int cantidadDeRoles = (int)QueryBuilder.Instance.build(consultaRoles, parametros).ExecuteScalar(); if (cantidadDeRoles > 1) { this.Hide(); new ElegirRol().ShowDialog(); this.Close(); } else { parametros.Clear(); parametros.Add(new SqlParameter("@username", UsuarioSesion.Usuario.nombre)); String rolDeUsuario = "SELECT r.rol_nombre FROM NET_A_CERO.Roles r, NET_A_CERO.Usuarios_x_Rol ru, NET_A_CERO.Usuarios u WHERE r.rol_id = ru.rol_id and ru.usr_id = u.usr_id and u.usr_usuario = @username"; String rolUser = (String)QueryBuilder.Instance.build(rolDeUsuario, parametros).ExecuteScalar(); UsuarioSesion.Usuario.rol = rolUser; this.Hide(); new MenuPrincipal().ShowDialog(); this.Close(); } }