<?php
session_start(); // Iniciar sesión al principio del archivo
include 'modelo.php'; // Incluir la conexión a la base de datos
require_once 'config.php';

// Registro de usuario
if (isset($_POST['register'])) {
    $nombre = $_POST['nombre'];
    $apellido = $_POST['apellido'];
    $correo = $_POST['correo'];
    $contrasena = isset($_POST['contrasena']) ? $_POST['contrasena'] : ''; // Obtener la contraseña de manera segura

    // Cifrar la contraseña antes de guardarla
    $contrasena_hash = password_hash($contrasena, PASSWORD_BCRYPT);

    // Verificar si el usuario ya existe
    $sqlVerificar = "SELECT * FROM usuarios WHERE correo = ?";
    $stmtVerificar = $conexion->conn->prepare($sqlVerificar);
    $stmtVerificar->bind_param('s', $correo);
    $stmtVerificar->execute();
    $resultadoVerificar = $stmtVerificar->get_result();

    if ($resultadoVerificar->num_rows > 0) {
        header("Location: main.php?registro=existe");
        exit();
    } else {
        // Insertar nuevo usuario
        $sqlInsert = "INSERT INTO usuarios (nombre, apellido, correo, contrasena, rol) VALUES (?, ?, ?, ?, 2)";
        $stmtInsert = $conexion->conn->prepare($sqlInsert);
        $stmtInsert->bind_param("ssss", $nombre, $apellido, $correo, $contrasena_hash);
        
        if ($stmtInsert->execute()) {
            header("Location: main.php?registro=exito");
            exit();
        } else {
            header("Location: main.php?registro=error");
            exit();
        }
    }
    $stmtVerificar->close();
}

// Login de usuario
if (isset($_POST['login'])) {
    $correo = $_POST['correo'];
    $contrasena = isset($_POST['contrasena']) ? $_POST['contrasena'] : '';

    // Buscar usuario en la base de datos
    $sql = "SELECT * FROM usuarios WHERE correo = ?";
    $stmt = $conexion->conn->prepare($sql);
    $stmt->bind_param('s', $correo);
    $stmt->execute();
    $resultado = $stmt->get_result();

    if ($resultado->num_rows > 0) {
        $usuario = $resultado->fetch_object();
         // Verificar la contraseña
        if (password_verify($contrasena, $usuario->contrasena)) {
            // Si el hash almacenado no es bcrypt, actualizarlo
            if (!str_starts_with($usuario->contrasena, '$2y$')) {
                $nuevo_hash = password_hash($contrasena, PASSWORD_BCRYPT);
                $sqlUpdate = "UPDATE usuarios SET contrasena = ? WHERE correo = ?";
                $stmtUpdate = $conexion->conn->prepare($sqlUpdate);
                $stmtUpdate->bind_param("ss", $nuevo_hash, $correo);
                $stmtUpdate->execute();
            }

            // Guardar datos del usuario en sesión
            $_SESSION['usuario_correo'] = $usuario->correo;
            $_SESSION['usuario_nombre'] = $usuario->nombre;
            $_SESSION['usuario_rol'] = $usuario->rol;

            // Redirigir al usuario
            header("Location: main.php");
            exit();
        } else {
            echo "Contraseña incorrecta.";
            // Redirigir al usuario
            header("Location: main.php?registro=error");
        }
    } else {
        echo "No se encontró el usuario.";
        // Redirigir al usuario
        header("Location: main.php");
    }

    $stmt->close();
}

// Cerrar la conexión
$conexion->cerrarConexion();
?>
