entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

0voto

Hola chicos,
necesito hacer la siguiente lógica:
Usuarios:
-admin : puede ver todos los clientes
-emisor : puede ver solo sus clientes y los de sus subemisores
-subemisor: solo puede ver sus clientes

actualmente mi BD tabla usuario guarda el tipo de usuario, pero nose como puedo hacer la logica, que campo necesito crear y llevarme para despues con php mediante una consulta , al ver los certificados traiga para el emisor los suyos y los de sus sub-emisores .....

Contexto actual:
Cada usuario crea clientes, solo el usuario tipo administrador puede ver todos los clientes creados... los demas tipos de usuarios solo pueden ver los usuarios creados por ellos mismos....
BD usuario : idcli (id del cliente) usuario (nombre del usuario)
BD cliente : idusu (id del usuario) id_usuario_creador (id del usuario que creo el cliente) nombre_usuario (nombre del usuario que lo creo)

este es mi index actual (el cual hasta ahora solo muestra al administrador todos los clientes, y a los demas tipos de usuarios sus propios clientes)

<?php
// Iniciar sesión
if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

// Incluir archivos necesarios
include("../seguridad.php");
include("../central/header.php");
include_once("../conexion/clsConexion.php");

// Obtener el nombre de usuario desde la sesión
$nombre_usuario = isset($_SESSION['usuario']) ? $_SESSION['usuario'] : '';

// Obtener el tipo de usuario de la sesión
$tipo_usuario = isset($_SESSION['tipo']) ? $_SESSION['tipo'] : '';

// Verificar si el nombre de usuario está definido
if (!empty($nombre_usuario)) {
    $obj = new clsConexion();
    $result = $obj->consultar("SELECT idusu FROM usuario WHERE usuario = '" . $obj->real_escape_string($nombre_usuario) . "'");
    $id_usuario_creador = !empty($result) ? $result[0]['idusu'] : 0; // Obtener el ID del usuario, si existe
} else {
    $id_usuario_creador = 0; // Valor por defecto si no hay usuario en sesión
}

// Asegúrate de que la conexión a la base de datos esté correctamente inicializada
$objcliente = new clsConexion();

// Escapar ID de usuario
$id_usuario_creador = $objcliente->real_escape_string($id_usuario_creador);

// Consulta SQL para obtener los clientes según el tipo de usuario
$query = "
    SELECT cliente.idcli, cliente.nombre, cliente.num_docucli, cliente.direccion, cliente.telefono
    FROM cliente
    WHERE id_usuario_creador = '$id_usuario_creador'
";

// Imprimir la consulta para depuración
echo "Consulta SQL: " . $query . "<br>";

// Ejecutar la consulta
$result = $objcliente->consultar($query);

// Verificar si hay un error en la consulta
if (!$result) {
    die("Error en la consulta: " . $objcliente->conexion->error);
}
?>

<div class="content-wrapper">
    <section class="content">
        <div class="box box-primary">
            <div class="box-header with-border">
                <h3 class="box-title"><b>CLIENTES</b></h3>
                <div class="box-tools pull-right">
                    <button class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
                    <button class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
                </div>
            </div>
            <div class="box-header">
                <a href="insertar.php" class="btn btn-primary btn-flat"><i class="fa fa-user-plus"></i> Registrar Nuevo Cliente</a>
            </div>
            <div class="box-body">
                <table id="example1" class="table table-striped table-bordered table-hover">
                    <thead>
                        <tr class="tableheader">
                            <th>Nombres</th>
                            <th>Num-Documento</th>
                            <th>Dirección</th>
                            <th>Teléfono</th>
                            <?php if ($tipo_usuario == 'administrador') { ?>
                                <th>Usuario Creador</th>
                                <th>Editar</th>
                                <th>Eliminar</th>
                            <?php } ?>
                        </tr>
                    </thead>
                    <tbody>
                        <?php 
                        if (empty($result)) {
                            echo "<tr><td colspan='" . ($tipo_usuario == 'administrador' ? 7 : 4) . "'>No se encontraron clientes.</td></tr>";
                        } else {
                            foreach ($result as $row) { ?>
                                <tr>
                                    <td><?php echo htmlspecialchars($row['nombre'], ENT_QUOTES, 'UTF-8'); ?></td>
                                    <td><?php echo htmlspecialchars($row['num_docucli'], ENT_QUOTES, 'UTF-8'); ?></td>
                                    <td><?php echo htmlspecialchars($row['direccion'], ENT_QUOTES, 'UTF-8'); ?></td>
                                    <td><?php echo htmlspecialchars($row['telefono'], ENT_QUOTES, 'UTF-8'); ?></td>
                                    <?php if ($tipo_usuario == 'administrador') { ?>
                                        <td><?php echo htmlspecialchars($row['creador'], ENT_QUOTES, 'UTF-8'); ?></td>
                                        <td>
                                            <a href='actualizar.php?idcli=<?php echo $row['idcli']; ?>' class='btn btn-default btn-sm btn-icon icon-left'>
                                                <i class="fa fa-pencil-square-o"></i> Editar
                                            </a>
                                        </td>
                                        <td>
                                            <button type="button" name="eliminar" id="<?php echo $row['idcli']; ?>" class='btn btn-danger btn-sm btn-icon icon-left eliminar'>
                                                <i class="fa fa-trash"></i> Eliminar
                                            </button>
                                        </td>
                                    <?php } ?>
                                </tr>
                            <?php }
                        } ?>
                    </tbody>
                </table>
                <!-- /.box-body -->
            </div>
        </div>
        <!-- /.box -->
    </section>
    <!-- /.content -->
</div>
<!-- /.content-wrapper -->

<?php include("../central/footer.php"); ?>

<script>
$(document).on('click', '.eliminar', function(){
    var id = $(this).attr("id");
    bootbox.confirm('¿Realmente desea eliminar?', function(result){
        if(result) {
            $.ajax({
                url: "eliminar.php",
                method: "POST",
                data: {id: id},
                success: function(data) {
                    location.reload(true);
                }
            });
        }
    });
});

$(function () {
    $('#example1').DataTable({
        responsive: true,
        autoWidth: false,
        "order": [[ 0, "desc" ]] // Ordenar (columna,orden)
    });
});
</script>
</body>
</html>

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta