示例#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));
            }
        }
示例#2
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));
                }
            }
        }