/// <summary> /// Implementación de la lógina de Login. /// </summary> public ResultadoLogin LoginUsuario(string usuario, string contrasenia) { string contraseniaSalt = ObtenerSal(usuario); string contraseniaBcrypt = ""; if (!String.IsNullOrWhiteSpace(contraseniaSalt)) { contraseniaBcrypt = BCrypt.HashPassword(contrasenia, contraseniaSalt); } SqlCommand loginCmd = new SqlCommand(loginQuery); loginCmd.Parameters.AddWithValue("@usuario", usuario); loginCmd.Parameters.AddWithValue("@contrasenia", contraseniaBcrypt); // Obtiene el resultado object resultado = OperacionSQL.ExecuteScalar(cadenaConexion, loginCmd); // Si el resultado es nulo, no existe el usuario. if (resultado == null) { return(new ResultadoLogin(ResultadoLogin.TipoResultado.DENEGADO, null)); } else if (resultado.Equals(Operacion.ERROR)) { return(new ResultadoLogin(ResultadoLogin.TipoResultado.ERROR, null)); } { // Se le asigna la ID de la base de datos al usuario creado. Usuario creado = new Usuario(usuario, contrasenia, contraseniaBcrypt); creado.ID = BBDDPrograma.ObtenerIDUsuario(creado); return(new ResultadoLogin(ResultadoLogin.TipoResultado.ACEPTADO, creado)); } }
/// <summary> /// Implementación de ObtenerPuertoDefecto. /// </summary> public int ObtenerPuertoDefecto(Conexion.TipoConexion tipo) { // Crea el comando SqlCommand obtenerPuerto = new SqlCommand(obtenerPuertoQuery); obtenerPuerto.Parameters.AddWithValue("@id_tipo", (int)tipo); // Obtiene y devuelve el resultado return((int)OperacionSQL.ExecuteScalar(cadenaConexion, obtenerPuerto)); }
/// <summary> /// Implementación de la lógina de EliminarConexion. /// </summary> public bool EliminarConexion(Conexion eliminar) { SqlCommand eliminarCmd = new SqlCommand(eliminarConexionQuery); eliminarCmd.Parameters.AddWithValue("@id_conexion", eliminar.ID); // Obtiene resultado int resultadoFilasSQL = OperacionSQL.ExecuteNonQuery(cadenaConexion, eliminarCmd); // Si es distinto a 0, se eliminado la conexión return(resultadoFilasSQL != 0); }
//// Métodos privados //// /// <summary> /// Comprueba si existe el nombre de un usuario en BBDD /// </summary> /// <param name="usuario">El nombre del usuario a buscar</param> /// <returns>True si existe el usuario.</returns> private bool ExisteUsuario(string usuario) { // Crea el comando SqlCommand existirCmd = new SqlCommand(existirQuery); existirCmd.Parameters.AddWithValue("@usuario", usuario); // Obtiene resultado object resultado = OperacionSQL.ExecuteScalar(cadenaConexion, existirCmd); // Si el resultado es nulo, no existe el usuario. return(resultado != null); }
/// <summary> /// Implementación de la lógina de RegistrarConexion. /// </summary> public ResultadoConexion RegistrarConexion(Conexion guardar) { // Si el puerto no está relleno, usar el por defecto almacenado en la bbdd // INSERT INTO conexion VALUES // tipo_conexion, id_usuario, nombre, direccion, puerto, usuario, contrasenia int tipo_conexion = (int)guardar.TipoActual; int id_usuario = guardar.Propietario.ID; string nombre = guardar.Nombre; string direccion = guardar.Direccion; string usuario = guardar.UsuarioConexion; string contrasenia = guardar.ContraseniaConexion; int puerto = guardar.Puerto; // La conexion se registra y luego se obtiene el ID de la BBDD en el constructor de Conexion if (ExisteConexion(guardar)) { return(new ResultadoConexion(ResultadoConexion.TipoResultado.DUPLICADO, null)); } else { SqlCommand registrarCmd = new SqlCommand(registrarConexionQuery); // @tipo_conexion, @id_usuario, @nombre, @direccion, @puerto, @usuario, @contrasenia registrarCmd.Parameters.AddWithValue("@tipo_conexion", tipo_conexion); registrarCmd.Parameters.AddWithValue("@id_usuario", id_usuario); registrarCmd.Parameters.AddWithValue("@nombre", nombre); registrarCmd.Parameters.AddWithValue("@direccion", direccion); registrarCmd.Parameters.AddWithValue("@puerto", puerto); registrarCmd.Parameters.AddWithValue("@usuario", usuario); registrarCmd.Parameters.AddWithValue("@contrasenia", contrasenia); // Obtiene el resultado int resultadoFilasSQL = OperacionSQL.ExecuteNonQuery(cadenaConexion, registrarCmd); // Si es distinto mayor a 0, se habrá registrado la conexion if (resultadoFilasSQL > 0) { // Devuelve la conexión guardada con su ID asignado guardar.ID = ObtenerIDConexion(guardar); return(new ResultadoConexion(ResultadoConexion.TipoResultado.ACEPTADO, guardar)); } else { return(new ResultadoConexion(ResultadoConexion.TipoResultado.ERROR, null)); } } }
/// <summary> /// Obtiene la Sal almacenada en BBDD de un usuario dado. /// </summary> /// <param name="usuario">El usuario del que obtener la sal.</param> /// <returns>String con la sal de la contraseña del usuario.</returns> public string ObtenerSal(string usuario) { SqlCommand saltCmd = new SqlCommand(saltQuery); saltCmd.Parameters.AddWithValue("@usuario", usuario); // Obtiene el resultado object resultado = OperacionSQL.ExecuteScalar(cadenaConexion, saltCmd); if (resultado != null) { return(resultado.ToString()); } else { return(""); } }
/// <summary> /// Implementación de la lógina de ObtenerConexionesUsuario. /// </summary> public ObservableCollection <Conexion> ObtenerConexionesUsuario(Usuario usuario) { // Crea el comando SqlCommand obtenerConexCmd = new SqlCommand(obtenerConexionesQuery); obtenerConexCmd.Parameters.AddWithValue("@id_usuario", usuario.ID); using (SqlDataReader lector = OperacionSQL.ExecuteReader(cadenaConexion, obtenerConexCmd)) { // Si el lector no es nulo, parsear las conexiones if (lector != null) { ObservableCollection <Conexion> retorno = new ObservableCollection <Conexion>(BBDDProgramaMapeo.ExtraerConexiones(lector, usuario)); return(retorno); } else { return(null); } } }
/// <summary> /// Implementación de la lógina de ObtenerIDUsuario. /// </summary> public int ObtenerIDUsuario(Usuario usuario) { // Crea el comando SqlCommand obtenerCmd = new SqlCommand(obtenerIDUsuarioQuery); obtenerCmd.Parameters.AddWithValue("@usuario", usuario.Nombre); obtenerCmd.Parameters.AddWithValue("@contrasenia", usuario.ContraseniaBBDD); // Obtiene el resultado object resultado = OperacionSQL.ExecuteScalar(cadenaConexion, obtenerCmd); // Si el resultado es nulo, no existe el usuario. if (resultado == null) { return(-1); } else { return((int)resultado); } }
/// <summary> /// Implementación de la lógina de ObtenerIDConexion. /// </summary> public int ObtenerIDConexion(Conexion conexion) { // Crea el comando SqlCommand obtenerIDCmd = new SqlCommand(obtenerIDConexionQuery); obtenerIDCmd.Parameters.AddWithValue("@nombredir", conexion.Nombre); obtenerIDCmd.Parameters.AddWithValue("@direccion", conexion.Direccion); obtenerIDCmd.Parameters.AddWithValue("@usuario", conexion.UsuarioConexion); // Obtiene el resultado object resultado = OperacionSQL.ExecuteScalar(cadenaConexion, obtenerIDCmd); // Si el resultado es nulo, no existe la conexion. if (resultado == null) { return(-1); } else { return((int)resultado); } }
/// <summary> /// Implementación de la lógina de Registro. /// </summary> public ResultadoRegistro RegistrarUsuario(string usuario, string contrasenia) { if (ExisteUsuario(usuario)) { return(new ResultadoRegistro(ResultadoRegistro.TipoResultado.DUPLICADO, null)); } else { // Generar sal string contraseniaSalt = BCrypt.GenerateSalt(); //mySalt == "$2a$10$rBV2JDeWW3.vKyeQcM8fFO" string contraseniaBcrypt = BCrypt.HashPassword(contrasenia, contraseniaSalt); //myHash == "$2a$10$rBV2JDeWW3.vKyeQcM8fFO4777l4bVeQgDL6VIkxqlzQ7TCalQvla" bool doesPasswordMatch = BCrypt.CheckPassword(contrasenia, contraseniaBcrypt); SqlCommand registrarCmd = new SqlCommand(registrarUsuarioQuery); registrarCmd.Parameters.AddWithValue("@usuario", usuario); registrarCmd.Parameters.AddWithValue("@contrasenia", contraseniaBcrypt); registrarCmd.Parameters.AddWithValue("@contrasenia_salt", contraseniaSalt); // Obtiene el resultado int resultadoFilasSQL = OperacionSQL.ExecuteNonQuery(cadenaConexion, registrarCmd); // Si es distinto mayor a 0, se habrá registrado el usuario if (resultadoFilasSQL > 0) { Usuario creado = new Usuario(usuario, contrasenia, contraseniaBcrypt); creado.ID = BBDDPrograma.ObtenerIDUsuario(creado); return(new ResultadoRegistro(ResultadoRegistro.TipoResultado.ACEPTADO, creado)); } else { return(new ResultadoRegistro(ResultadoRegistro.TipoResultado.ERROR_CONEXION, null)); } } }