diff --git a/html/cadastro_saida.php b/html/cadastro_saida.php index 57e96681..90ea73fc 100755 --- a/html/cadastro_saida.php +++ b/html/cadastro_saida.php @@ -1,47 +1,63 @@ prepare("SELECT id_cargo FROM funcionario WHERE id_pessoa = ?"); +$stmt->bind_param("i", $id_pessoa); +$stmt->execute(); +$resultado = $stmt->get_result(); + +if ($resultado && $resultado->num_rows > 0) { + $row = $resultado->fetch_assoc(); + $id_cargo = $row['id_cargo']; + + // Segunda consulta usando prepared statements + $stmt = $conexao->prepare("SELECT id_acao FROM permissao WHERE id_cargo = ? AND id_recurso = 24"); + $stmt->bind_param("i", $id_cargo); + $stmt->execute(); + $resultado = $stmt->get_result(); + + if ($resultado && $resultado->num_rows > 0) { + $permissao = $resultado->fetch_assoc(); + if ($permissao['id_acao'] < 3) { + $msg = urlencode("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=$msg"); + exit(); + } + $permissao = $permissao['id_acao']; + } else { + $permissao = 1; + $msg = urlencode("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=$msg"); + exit(); + } } else { - $permissao = 1; - $msg = "Você não tem as permissões necessárias para essa página."; - header("Location: ./home.php?msg_c=$msg"); + $permissao = 1; + $msg = urlencode("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=$msg"); + exit(); } + // Adiciona a Função display_campo($nome_campo, $tipo_campo) require_once "personalizacao_display.php"; - require_once "../Functions/permissao/permissao.php"; ?> diff --git a/html/listar_saida.php b/html/listar_saida.php index a446e438..f3744211 100755 --- a/html/listar_saida.php +++ b/html/listar_saida.php @@ -1,63 +1,82 @@ prepare("SELECT * FROM funcionario WHERE id_pessoa = ?"); +$stmt->bind_param("i", $id_pessoa); +$stmt->execute(); +$resultado = $stmt->get_result(); + +if ($resultado && $resultado->num_rows > 0) { + $id_cargo = $resultado->fetch_assoc()['id_cargo']; + + // Prevenindo injeção de SQL em permissões + $stmt_permissao = $conexao->prepare("SELECT * FROM permissao WHERE id_cargo = ? AND id_recurso = 24"); + $stmt_permissao->bind_param("i", $id_cargo); + $stmt_permissao->execute(); + $resultado_permissao = $stmt_permissao->get_result(); + + if ($resultado_permissao && $resultado_permissao->num_rows > 0) { + $permissao = $resultado_permissao->fetch_assoc(); + + // Verificando permissões + if ($permissao['id_acao'] < 5) { + // Prevenindo XSS com htmlentities + $msg = htmlentities("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=" . urlencode($msg)); + exit(); + } + $permissao = $permissao['id_acao']; + } else { + // Caso não tenha permissão + $msg = htmlentities("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=" . urlencode($msg)); + exit(); + } +} else { + // Caso o funcionário não seja encontrado + $msg = htmlentities("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=" . urlencode($msg)); + exit(); +} + +// Incluindo arquivo de personalização de display +require_once "personalizacao_display.php"; ?> diff --git a/html/relatorio.php b/html/relatorio.php index 840be249..97e08770 100755 --- a/html/relatorio.php +++ b/html/relatorio.php @@ -1,51 +1,69 @@ prepare("SELECT * FROM funcionario WHERE id_pessoa = ?"); +$stmt->bind_param("i", $id_pessoa); // O 'i' indica que $id_pessoa é um inteiro +$stmt->execute(); +$resultado = $stmt->get_result(); + +if ($resultado && $resultado->num_rows > 0) { + $funcionario = $resultado->fetch_assoc(); + $id_cargo = $funcionario['id_cargo']; + + // Prevenindo injeção de SQL para a verificação de permissões + $stmt_permissao = $conexao->prepare("SELECT * FROM permissao WHERE id_cargo = ? AND id_recurso = 25"); + $stmt_permissao->bind_param("i", $id_cargo); + $stmt_permissao->execute(); + $resultado_permissao = $stmt_permissao->get_result(); + + if ($resultado_permissao && $resultado_permissao->num_rows > 0) { + $permissao = $resultado_permissao->fetch_assoc(); + + // Verificando permissões if ($permissao['id_acao'] < 5) { - $msg = "Você não tem as permissões necessárias para essa página."; - header("Location: ./home.php?msg_c=$msg"); + // Prevenindo XSS com htmlentities + $msg = htmlentities("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=" . urlencode($msg)); + exit(); } - $permissao = $permissao['id_acao']; } else { - $permissao = 1; - $msg = "Você não tem as permissões necessárias para essa página."; - header("Location: ./home.php?msg_c=$msg"); + // Caso não tenha permissão + $msg = htmlentities("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=" . urlencode($msg)); + exit(); } } else { - $permissao = 1; - $msg = "Você não tem as permissões necessárias para essa página."; - header("Location: ./home.php?msg_c=$msg"); + // Caso o funcionário não seja encontrado + $msg = htmlentities("Você não tem as permissões necessárias para essa página."); + header("Location: ./home.php?msg_c=" . urlencode($msg)); + exit(); } -// Adiciona a Função display_campo($nome_campo, $tipo_campo) -require_once "personalizacao_display.php"; - - - +// Incluindo arquivo de personalização de display +require_once "personalizacao_display.php"; ?>