Example #1
0
        /// <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));
            }
        }
Example #2
0
        /// <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));
        }
Example #3
0
        /// <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);
        }
Example #4
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);
        }
Example #5
0
        /// <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));
                }
            }
        }
Example #6
0
        /// <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("");
            }
        }
Example #7
0
        /// <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);
                }
            }
        }
Example #8
0
        /// <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);
            }
        }
Example #9
0
        /// <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);
            }
        }
Example #10
0
        /// <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));
                }
            }
        }