<?php
session_start();
require_once 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = trim($_POST['username'] ?? '');
    $password = trim($_POST['password'] ?? '');

    if (empty($username) || empty($password)) {
        $_SESSION['erro_login'] = "Preencha o usuário e a senha.";
        header("Location: login.php");
        exit;
    }

    try {
        // Ao chamar essa função, o config.php já lê o banco interno,
        // descobre qual modo está ativo, e retorna a conexão certinha.
        $pdo = getConexaoAtiva(); 
        
        // Busca na tabela de admins/revendedores (reg_users)
        $sql = "SELECT id, username, password, member_group_id FROM reg_users WHERE username = :username LIMIT 1";
        $stmt = $pdo->prepare($sql);
        $stmt->bindParam(':username', $username, PDO::PARAM_STR);
        $stmt->execute();

        $user = $stmt->fetch(PDO::FETCH_ASSOC);

        if ($user) {
            $senhaValida = false;

            // Validações de senha para aceitar o formato novo e o formato Xtream UI antigo
            if (password_verify($password, $user['password'])) {
                $senhaValida = true; 
            } elseif (crypt($password, $user['password']) === $user['password']) {
                $senhaValida = true; 
            } elseif (md5($password) === $user['password']) {
                $senhaValida = true;
            } elseif ($password === $user['password']) {
                $senhaValida = true;
            }

            if ($senhaValida) {
                session_regenerate_id(true); 
                $_SESSION['user_id'] = $user['id'];
                $_SESSION['username'] = $user['username'];
                $_SESSION['user_role'] = ($user['member_group_id'] == 1) ? 'admin' : 'reseller';

                // ========================================================================
                // --- INÍCIO: SENSOR DE HISTÓRICO DE LOGINS ---
                // ========================================================================
                try {
                    // Pega o IP real, mesmo passando por Cloudflare/Proxy
                    $ip_log = $_SERVER['REMOTE_ADDR'];
                    if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
                        $ip_log = $_SERVER['HTTP_CF_CONNECTING_IP'];
                    } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                        $ip_log = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0];
                    }

                    $agent = $_SERVER['HTTP_USER_AGENT'] ?? '';
                    
                    // Descobre Navegador
                    $nav = "Desconhecido"; 
                    if(strpos($agent, 'Chrome') !== false) $nav = 'Chrome';
                    elseif(strpos($agent, 'Firefox') !== false) $nav = 'Firefox';
                    elseif(strpos($agent, 'Safari') !== false && strpos($agent, 'Chrome') === false) $nav = 'Safari';
                    elseif(strpos($agent, 'Edge') !== false || strpos($agent, 'Edg') !== false) $nav = 'Edge';
                    elseif(strpos($agent, 'Opera') !== false || strpos($agent, 'OPR') !== false) $nav = 'Opera';
                    
                    // Descobre Sistema Operacional e Dispositivo
                    $os = "Desconhecido"; 
                    $dev = "Desktop";
                    
                    if(strpos($agent, 'Windows') !== false) $os = 'Windows';
                    elseif(strpos($agent, 'Android') !== false) { $os = 'Android'; $dev = 'Mobile'; }
                    elseif(strpos($agent, 'iPhone') !== false) { $os = 'iOS (iPhone)'; $dev = 'Mobile'; }
                    elseif(strpos($agent, 'iPad') !== false) { $os = 'iOS (iPad)'; $dev = 'Tablet'; }
                    elseif(strpos($agent, 'Mac') !== false) $os = 'macOS';
                    elseif(strpos($agent, 'Linux') !== false) $os = 'Linux';
                    
                    $loc = 'BR'; // Localização base
                    
                    $stmtLog = $pdo->prepare("INSERT INTO historico_logins (user_id, ip, sistema_operacional, navegador, localizacao, device_type) VALUES (?, ?, ?, ?, ?, ?)");
                    $stmtLog->execute([$user['id'], trim($ip_log), $os, $nav, $loc, $dev]);
                } catch(Exception $e) {
                    // Se falhar o log, ignora para não impedir o login do usuário
                }
                // ========================================================================
                // --- FIM: SENSOR DE HISTÓRICO DE LOGINS ---
                // ========================================================================

                header("Location: dashboard.php");
                exit;
            } else {
                $_SESSION['erro_login'] = "Usuário ou senha incorretos.";
                header("Location: login.php");
                exit;
            }
        } else {
            $_SESSION['erro_login'] = "Usuário não encontrado.";
            header("Location: login.php");
            exit;
        }
    } catch (PDOException $e) {
        // Captura o erro e joga para a tela de login bonitinho
        $_SESSION['erro_login'] = "Falha ao conectar no banco: " . $e->getMessage();
        header("Location: login.php");
        exit;
    }
} else {
    // Se tentarem acessar a página direto pela URL
    header("Location: login.php");
    exit;
}
?>
