<?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 {
        $pdo = getConexaoAtiva(); 
        $pdo_int = getConexaoInterna(); // Necessário para ler configs e salvar histórico
        
        // MÁGICA: Detecta o modo para saber em qual tabela procurar o Admin
        $modo_ativo = 'interno';
        try {
            $modo_ativo = $pdo_int->query("SELECT modo_ativo FROM configuracoes LIMIT 1")->fetchColumn() ?: 'interno';
        } catch (Exception $e) {}
        
        // No Xtream UI os revendedores ficam em 'reg_users'. No XUI ONE, ficam na tabela 'users'!
        $tabela_admin = ($modo_ativo === 'xui') ? '`users`' : '`reg_users`';

        // Busca o usuário na tabela correta de forma inteligente
        $sql = "SELECT id, username, password, member_group_id FROM $tabela_admin 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) {
            // A verificação abaixo cobre o XUI One (password_verify) 
            // e os antigos (md5/crypt) caso você migre clientes
            $senhaValida = (password_verify($password, $user['password']) || 
                           crypt($password, $user['password']) === $user['password'] || 
                           md5($password) === $user['password'] || 
                           $password === $user['password']);

            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';

                // Log de histórico mantido e salvo no banco INTERNO do seu painel
                try {
                    $ip_log = $_SERVER['REMOTE_ADDR'];
                    $stmtLog = $pdo_int->prepare("INSERT INTO historico_logins (user_id, ip) VALUES (?, ?)");
                    $stmtLog->execute([$user['id'], $ip_log]);
                } catch(Exception $e) {}

                header("Location: dashboard.php");
                exit;
            } else {
                $_SESSION['erro_login'] = "Usuário ou senha incorretos.";
            }
        } else {
            $_SESSION['erro_login'] = "Usuário não encontrado.";
        }
    } catch (PDOException $e) {
        $_SESSION['erro_login'] = "Erro de conexão: " . $e->getMessage();
    }
    header("Location: login.php");
    exit;
}
?>