<?php
// /public_html/admin/security.php
session_start();
require '../config/db_connect.php';

// 1. SECURITY: Admin Access Check
if (!isset($_SESSION['user_id'])) {
    header("Location: ../login.php");
    exit();
}

$user_id = $_SESSION['user_id'];
$check_admin = $conn->query("SELECT role FROM users WHERE id = '$user_id'")->fetch_assoc();

if (($check_admin['role'] ?? '') !== 'admin') {
    die("<div class='alert alert-danger m-5'>ACCESS DENIED. You are not an administrator.</div>");
}

$msg = "";
$error_msg = "";

// 2. Handle Manual IP Ban
if (isset($_POST['ban_ip'])) {
    $ip = trim($_POST['ip']);
    
    // Check if already banned
    $check = $conn->prepare("SELECT id FROM blocked_ips WHERE ip_address = ?");
    $check->bind_param("s", $ip);
    $check->execute();
    
    if ($check->get_result()->num_rows == 0) {
        $stmt = $conn->prepare("INSERT INTO blocked_ips (ip_address, reason) VALUES (?, 'Manual Admin Ban')");
        $stmt->bind_param("s", $ip);
        if ($stmt->execute()) {
            $msg = "IP Address $ip has been banned.";
        } else {
            $error_msg = "Database Error: " . $conn->error;
        }
    } else {
        $error_msg = "This IP is already banned.";
    }
}

// 3. Handle Domain Block
if (isset($_POST['block_domain'])) {
    $domain = trim($_POST['domain']);
    // Remove http/https/www if pasted
    $domain = preg_replace('#^https?://#', '', $domain);
    $domain = preg_replace('#^www\.#', '', $domain);
    
    // Check if already blocked
    $check = $conn->prepare("SELECT id FROM blocked_domains WHERE domain = ?");
    $check->bind_param("s", $domain);
    $check->execute();
    
    if ($check->get_result()->num_rows == 0) {
        $stmt = $conn->prepare("INSERT INTO blocked_domains (domain, added_by) VALUES (?, 'admin')");
        $stmt->bind_param("s", $domain);
        if ($stmt->execute()) {
            $msg = "Domain $domain has been blocked.";
        } else {
            $error_msg = "Database Error: " . $conn->error;
        }
    } else {
        $error_msg = "This domain is already blocked.";
    }
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Security Control - Admin</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.7.2/font/bootstrap-icons.css">
</head>
<body class="bg-light">

    <?php include 'includes/navbar.php'; ?>

    <div class="container mt-5">
        <h2 class="mb-4 text-danger"><i class="bi bi-shield-lock"></i> Security Control</h2>
        
        <?php if(!empty($msg)): ?>
            <div class="alert alert-success alert-dismissible fade show" role="alert">
                <i class="bi bi-check-circle"></i> <?php echo $msg; ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
            </div>
        <?php endif; ?>

        <?php if(!empty($error_msg)): ?>
            <div class="alert alert-danger alert-dismissible fade show" role="alert">
                <i class="bi bi-exclamation-triangle"></i> <?php echo $error_msg; ?>
                <button type="button" class="btn-close" data-bs-dismiss="alert"></button>
            </div>
        <?php endif; ?>

        <div class="row g-4">
            <div class="col-md-6">
                <div class="card shadow-sm h-100 border-danger">
                    <div class="card-header bg-danger text-white">
                        <h5 class="mb-0"><i class="bi bi-slash-circle"></i> Ban IP Address</h5>
                    </div>
                    <div class="card-body">
                        <p class="text-muted small">Prevent a specific IP from accessing your links or creating accounts.</p>
                        <form method="POST">
                            <div class="mb-3">
                                <label class="form-label">IP Address</label>
                                <input type="text" name="ip" class="form-control" placeholder="e.g. 192.168.1.5" required>
                            </div>
                            <button type="submit" name="ban_ip" class="btn btn-danger w-100">Ban IP Now</button>
                        </form>
                    </div>
                </div>
            </div>

            <div class="col-md-6">
                <div class="card shadow-sm h-100 border-warning">
                    <div class="card-header bg-warning text-dark">
                        <h5 class="mb-0"><i class="bi bi-globe"></i> Block Domain (Anti-Phishing)</h5>
                    </div>
                    <div class="card-body">
                        <p class="text-muted small">Prevent users from shortening links to this domain (e.g. known malware sites).</p>
                        <form method="POST">
                            <div class="mb-3">
                                <label class="form-label">Domain Name</label>
                                <input type="text" name="domain" class="form-control" placeholder="e.g. malicious-site.com" required>
                            </div>
                            <button type="submit" name="block_domain" class="btn btn-warning w-100">Block Domain</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
        
        <div class="mt-4 text-center">
            <p class="text-muted">Want to see who is banned? Check the database tables <code>blocked_ips</code> and <code>blocked_domains</code>.</p>
        </div>

    </div>

    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>