<?php
require_once __DIR__ . '/config.php';

$error = null;

if (usuarioActual()) {
    header('Location: portal.php');
    exit;
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrfValidarOMorir();

    $nombre    = trim($_POST['nombre_completo'] ?? '');
    $correo    = trim($_POST['correo'] ?? '');
    $password  = $_POST['password'] ?? '';
    $password2 = $_POST['password2'] ?? '';

    if (!$nombre || !$correo || !$password) {
        $error = 'Todos los campos son obligatorios.';
    } elseif (!filter_var($correo, FILTER_VALIDATE_EMAIL)) {
        $error = 'El correo no tiene un formato válido.';
    } elseif (strlen($password) < 8) {
        $error = 'La contraseña debe tener al menos 8 caracteres.';
    } elseif ($password !== $password2) {
        $error = 'Las contraseñas no coinciden.';
    } else {
        $pdo = db();
        $stmt = $pdo->prepare("SELECT id FROM usuarios WHERE correo = ?");
        $stmt->execute([$correo]);

        if ($stmt->fetch()) {
            // Mensaje genérico: no confirmar ni negar explícitamente que
            // el correo ya existe evitaría enumeración de usuarios, pero
            // aquí es información que el propio usuario necesita para
            // saber que debe iniciar sesión en vez de registrarse de nuevo.
            $error = 'Ya existe una cuenta con ese correo. Intenta iniciar sesión.';
        } else {
            // El registro público SIEMPRE crea rol='cargador'.
            // Los roles revisor/admin solo los asigna un admin desde su panel.
            $pdo->prepare("
                INSERT INTO usuarios (nombre_completo, correo, password_hash, rol)
                VALUES (?, ?, ?, 'cargador')
            ")->execute([
                $nombre, $correo,
                password_hash($password, PASSWORD_BCRYPT),
            ]);

            $nuevoId = (int)$pdo->lastInsertId();
            session_regenerate_id(true);
            $_SESSION['usuario'] = [
                'id' => $nuevoId, 'nombre' => $nombre,
                'correo' => $correo, 'rol' => 'cargador',
            ];
            header('Location: portal.php');
            exit;
        }
    }
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Crear cuenta — Fondo Documental SGC</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.css" rel="stylesheet">
<link href="estilos.css" rel="stylesheet">
</head>
<body class="pagina-auth">
<div class="container">
<div class="card card-login">
    <div class="card-body">
        <p class="fw-semibold mb-1" style="font-size:.95rem">Crear cuenta gratuita</p>
        <p class="text-muted mb-4" style="font-size:.78rem">Todas las cuentas nuevas inician con rol cargador.</p>

        <?php if ($error): ?>
            <div class="alert alert-danger py-2 mb-3"><i class="bi bi-exclamation-circle me-1"></i> <?= htmlspecialchars($error) ?></div>
        <?php endif; ?>

        <form method="post" novalidate>
            <?= csrfCampoOculto() ?>
            <div class="mb-3">
                <label class="form-label">Nombre completo</label>
                <input type="text" name="nombre_completo" class="form-control" required autofocus
                       value="<?= htmlspecialchars($_POST['nombre_completo'] ?? '') ?>">
            </div>
            <div class="mb-3">
                <label class="form-label">Correo electrónico</label>
                <input type="email" name="correo" class="form-control" required
                       value="<?= htmlspecialchars($_POST['correo'] ?? '') ?>">
            </div>
            <div class="mb-3">
                <label class="form-label">Contraseña</label>
                <input type="password" name="password" class="form-control" required minlength="8">
                <div class="form-text" style="font-size:.72rem">Mínimo 8 caracteres.</div>
            </div>
            <div class="mb-3">
                <label class="form-label">Confirmar contraseña</label>
                <input type="password" name="password2" class="form-control" required minlength="8">
            </div>
            <button type="submit" class="btn btn-sgc-primary w-100 mb-2">Crear cuenta</button>
            <a href="login.php" class="btn btn-outline-secondary w-100">Ya tengo cuenta</a>
        </form>
    </div>
</div>
</div>
</body>
</html>
