<?php
// 1. Prevenção de saída acidental e início de sessão seguro
ob_start();

if (session_status() === PHP_SESSION_NONE) {
    session_start();
}

include "includes/header.php";

// Verificação de segurança: Objeto DB
if (!isset($db) || !is_object($db)) {
    error_log("Erro crítico: Objeto de banco de dados (\$db) não inicializado.");
    die("Erro interno do servidor. A conexão com o banco de dados falhou.");
}

// Geração de Token CSRF para proteção do formulário
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

$table_name = "users";
$current_page = basename($_SERVER["SCRIPT_NAME"]);

// 2. Busca de dados inicial (ID fixo 1 para administrador)
try {
    $res = $db->select($table_name, "*", "id = :id", "", [":id" => 1]);
} catch (Exception $e) {
    error_log("Erro ao buscar usuário: " . $e->getMessage());
    $res = [];
}

$userData = !empty($res) ? $res[0] : ["username" => "", "password" => ""];

// 3. Processamento do Formulário (POST)
if ($_SERVER["REQUEST_METHOD"] === "POST" && isset($_POST["submit"])) {
    
    // Validação de Token CSRF
    if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        header("Location: {$current_page}?status=403");
        exit();
    }

    // Sanitização
    $username = trim($_POST["username"] ?? "");
    $password = trim($_POST["password"] ?? "");

    if (!empty($username) && !empty($password)) {
        try {
            $updateData = [
                "username" => $username,
                "password" => $password // Nota: Idealmente use password_hash aqui no futuro
            ];

            $success = $db->update($table_name, $updateData, "id = :id", [":id" => 1]);

            if ($success) {
                $_SESSION["name"] = $username;
                header("Location: {$current_page}?status=5");
                exit();
            } else {
                header("Location: {$current_page}?status=500");
                exit();
            }
        } catch (Exception $e) {
            error_log("Exceção na atualização: " . $e->getMessage());
            header("Location: {$current_page}?status=500_exception");
            exit();
        }
    } else {
        header("Location: {$current_page}?status=400");
        exit();
    }
}
?>

<style>
    :root {
        --primary: #2E3192;
        --dark: #0d1541;
        --radius: 12px;
        --shadow: 0 10px 30px rgba(0,0,0,0.08);
    }
    body { background: #f8fafd; font-family: 'Inter', sans-serif; }
    
    .card-modern {
        background: #fff;
        border-radius: var(--radius);
        box-shadow: var(--shadow);
        border: none;
        overflow: hidden;
    }
    .card-header-modern {
        background: linear-gradient(135deg, var(--primary), #4facfe);
        color: #fff;
        padding: 1.5rem;
    }
    .form-control {
        border-radius: 8px;
        padding: 0.75rem 1rem;
        border: 1px solid #e0e6ed;
    }
    .form-control:focus {
        border-color: var(--primary);
        box-shadow: 0 0 0 3px rgba(46, 49, 146, 0.1);
    }
    .btn-update {
        background-color: var(--primary);
        color: white;
        border: none;
        padding: 12px 30px;
        border-radius: 8px;
        font-weight: 600;
        transition: 0.3s;
        cursor: pointer;
    }
    .btn-update:hover {
        background-color: var(--dark);
        transform: translateY(-2px);
        color: white;
    }
</style>

<div class="container py-5">
    <div class="row justify-content-center">
        <div class="col-md-6">
            
            <?php 
            if (isset($_GET['status'])):
                $status = $_GET['status'];
                $msg = ''; $type = '';
                switch($status) {
                    case '5': $msg = 'Credenciais atualizadas com sucesso!'; $type = 'success'; break;
                    case '400': $msg = 'Usuário e senha são obrigatórios.'; $type = 'warning'; break;
                    case '403': $msg = 'Sessão expirada ou inválida. Tente novamente.'; $type = 'danger'; break;
                    case '500': $msg = 'Erro ao salvar no banco de dados.'; $type = 'danger'; break;
                    case '500_exception': $msg = 'Erro crítico no servidor.'; $type = 'danger'; break;
                }
                if ($msg): ?>
                    <div class="alert alert-<?= $type ?> alert-dismissible fade show shadow-sm border-0 mb-4" role="alert">
                        <i class="fas fa-info-circle me-2"></i> <?= htmlspecialchars($msg) ?>
                        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
                    </div>
                <?php endif; 
            endif; ?>

            <div class="card-modern shadow">
                <div class="card-header-modern text-center">
                    <h4 class="mb-0 text-white"><i class="fas fa-shield-alt me-2"></i> Segurança do Painel</h4>
                </div>
                <div class="card-body p-4 p-md-5">
                    <div class="alert alert-warning border-0 small mb-4" style="background: rgba(253, 126, 20, 0.1);">
                        <i class="fas fa-lock me-2"></i> Altere as credenciais periodicamente para sua segurança.
                    </div>

                    <form method="post" autocomplete="off">
                        <input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">

                        <div class="mb-3">
                            <label class="form-label fw-bold small text-muted">USUÁRIO ADMINISTRADOR</label>
                            <div class="input-group">
                                <span class="input-group-text bg-light border-end-0"><i class="fas fa-user text-muted"></i></span>
                                <input type="text" class="form-control border-start-0" name="username" 
                                       value="<?= htmlspecialchars($userData["username"] ?? '') ?>" required>
                            </div>
                        </div>

                        <div class="mb-4">
                            <label class="form-label fw-bold small text-muted">NOVA SENHA</label>
                            <div class="input-group">
                                <span class="input-group-text bg-light border-end-0"><i class="fas fa-key text-muted"></i></span>
                                <input type="text" class="form-control border-start-0" name="password" 
                                       value="<?= htmlspecialchars($userData["password"] ?? '') ?>" required>
                            </div>
                        </div>

                        <div class="text-center">
                            <button type="submit" name="submit" class="btn-update shadow-sm w-100">
                                <i class="fas fa-sync-alt me-2"></i> Salvar Novas Credenciais
                            </button>
                        </div>
                    </form>
                </div>
            </div>
            
            <div class="text-center mt-4">
                <a href="index.php" class="text-muted text-decoration-none small"><i class="fas fa-arrow-left me-1"></i> Voltar ao Dashboard</a>
            </div>
        </div>
    </div>
</div>

<script>
// Auto-hide alerts com verificação de existência
document.addEventListener('DOMContentLoaded', function() {
    setTimeout(() => {
        let alerts = document.querySelectorAll('.alert-success, .alert-warning, .alert-danger');
        alerts.forEach(a => {
            if (typeof bootstrap !== 'undefined' && bootstrap.Alert) {
                let bsAlert = new bootstrap.Alert(a);
                bsAlert.close();
            } else {
                a.style.display = 'none';
            }
        });
    }, 4000);
});
</script>

<?php
include "includes/footer.php";
ob_end_flush();
?>