<?php
session_start();
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
include 'conexion.php';

// Solo administradores pueden acceder
if (!isset($_SESSION['usuario']) || $_SESSION['rol'] !== 'admin') {
    header("Location: index.php");
    exit;
}

// Obtener ID del usuario a editar
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
$usuario = $conexion->query("SELECT * FROM usuarios WHERE id = $id")->fetch_assoc();

if (!$usuario) {
    echo "Usuario no encontrado.";
    exit;
}

$error = '';

// Procesar formulario
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $nuevo_usuario = trim($_POST['usuario']);
    $nuevo_rol = $_POST['rol'];
    $nueva_clave = $_POST['clave'];

    if (!empty($nueva_clave) && strlen($nueva_clave) < 6) {
        $error = "La nueva contraseña debe tener al menos 6 caracteres.";
    } else {
        if (!empty($nueva_clave)) {
            $hash = password_hash($nueva_clave, PASSWORD_DEFAULT);
            $stmt = $conexion->prepare("UPDATE usuarios SET usuario = ?, rol = ?, contraseña = ? WHERE id = ?");
            $stmt->bind_param("sssi", $nuevo_usuario, $nuevo_rol, $hash, $id);
        } else {
            $stmt = $conexion->prepare("UPDATE usuarios SET usuario = ?, rol = ? WHERE id = ?");
            $stmt->bind_param("ssi", $nuevo_usuario, $nuevo_rol, $id);
        }

        if ($stmt->execute()) {
            header("Location: gestionar_usuarios.php");
            exit;
        } else {
            $error = "❌ Error al actualizar el usuario.";
        }
    }
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <title>Editar Usuario</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body class="bg-light d-flex align-items-center justify-content-center vh-100">
<div class="container">
    <div class="row justify-content-center">
        <div class="col-11 col-sm-8 col-md-6 col-lg-4">
            <div class="card shadow-sm border-0">
                <div class="card-body p-4">
                    <h4 class="card-title text-center mb-4">✏️ Editar Usuario</h4>
                    <?php if ($error): ?>
                        <div class="alert alert-danger"><?= $error ?></div>
                    <?php endif; ?>
                    <form method="post" class="needs-validation" novalidate>
                        <div class="mb-3">
                            <label for="usuario" class="form-label">Usuario</label>
                            <input type="text" class="form-control" id="usuario" name="usuario" value="<?= htmlspecialchars($usuario['usuario']) ?>" required>
                            <div class="invalid-feedback">Introduce un nombre de usuario.</div>
                        </div>
                        <div class="mb-3">
                            <label for="rol" class="form-label">Rol</label>
                            <select name="rol" id="rol" class="form-select" required>
                                <option value="user" <?= $usuario['rol'] === 'usuario' ? 'selected' : '' ?>>Usuario</option>
                                <option value="admin" <?= $usuario['rol'] === 'admin' ? 'selected' : '' ?>>Administrador</option>
                            </select>
                            <div class="invalid-feedback">Selecciona un rol.</div>
                        </div>
                        <div class="mb-3">
                            <label for="clave" class="form-label">Nueva contraseña (opcional)</label>
                            <input type="password" class="form-control" id="clave" name="clave" minlength="6">
                            <div class="form-text">Déjalo vacío si no deseas cambiarla.</div>
                        </div>
                        <div class="d-grid">
                            <button type="submit" class="btn btn-primary">Guardar Cambios</button>
                        </div>
                    </form>
                    <p class="mt-3 text-center text-muted small"><a href="gestionar_usuarios.php">❌ Volver a la gestión</a></p>
                </div>
            </div>
        </div>
    </div>
</div>
<script>
(() => {
    'use strict';
    const forms = document.querySelectorAll('.needs-validation');
    Array.from(forms).forEach(form => {
        form.addEventListener('submit', event => {
            if (!form.checkValidity()) {
                event.preventDefault();
                event.stopPropagation();
            }
            form.classList.add('was-validated');
        }, false);
    });
})();
</script>
</body>
</html>
