<?php
declare(strict_types=1);

$cfgPath = __DIR__ . '/api/config.php';
$remoteAddr = (string) ($_SERVER['REMOTE_ADDR'] ?? '');
$isLocalRequest = in_array($remoteAddr, ['127.0.0.1', '::1'], true);
$defaultAdminHash = '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi';
$existingHash = '';
if (is_readable($cfgPath)) {
    
    require $cfgPath;
    if (defined('SITE_ADMIN_PASSWORD_HASH')) {
        $existingHash = (string) constant('SITE_ADMIN_PASSWORD_HASH');
    }
}
$isAlreadyConfigured = $existingHash !== '' && !hash_equals($existingHash, $defaultAdminHash);

if (!$isLocalRequest) {
    http_response_code(403);
    die('<p>Bu kurulum sayfası sadece localhost üzerinden kullanılabilir.</p>');
}
if ($isAlreadyConfigured) {
    http_response_code(403);
    die('<p>Yönetici şifresi zaten ayarlanmış. Güvenlik için <code>setup.php</code> dosyasını silin.</p>');
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $pw = (string) ($_POST['password'] ?? '');
    $pw2 = (string) ($_POST['password2'] ?? '');
    if (strlen($pw) < 10) {
        die('<p>Şifre en az 10 karakter olmalı.</p><a href="setup.php">Geri</a>');
    }
    if ($pw !== $pw2) {
        die('<p>Şifreler eşleşmiyor.</p><a href="setup.php">Geri</a>');
    }
    $hash = password_hash($pw, PASSWORD_DEFAULT);
    $out = "<?php\ndeclare(strict_types=1);\n\nif (!defined('SITE_ADMIN_PASSWORD_HASH')) {\n    define('SITE_ADMIN_PASSWORD_HASH', " . var_export($hash, true) . ");\n}\n";
    if (file_put_contents($cfgPath, $out) === false) {
        die('<p><code>api/config.php</code> yazılamadı. Klasör izinlerini kontrol edin.</p>');
    }
    header('Location: admin.php', true, 302);
    exit;
}

?>
<!DOCTYPE html>
<html lang="tr">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="robots" content="noindex, nofollow" />
  <title>Mocker — Şifre</title>
  <style>
    body { font-family: system-ui, sans-serif; background:
    label { display: block; margin-top: 1rem; font-size: 0.75rem; text-transform: uppercase; letter-spacing: 0.05em; color:
    input { width: 100%; margin-top: 0.35rem; padding: 0.65rem 0.85rem; border-radius: 0.5rem; border: 1px solid
    button { margin-top: 1.5rem; width: 100%; padding: 0.75rem; border: none; border-radius: 0.5rem; background:
    code { background:
    .warn { background: rgba(251, 191, 36, 0.1); border: 1px solid rgba(251, 191, 36, 0.3); padding: 0.75rem; border-radius: 0.5rem; font-size: 0.85rem; color:
  </style>
</head>
<body>
  <h1 style="font-size: 1.25rem;">Yönetici şifresi</h1>
  <p style="color: #94a3b8; font-size: 0.9rem; margin-top: 0.5rem;">Şifre <code>api/config.php</code> içine kaydedilir. İşlem sonrası <strong>setup.php dosyasını silin</strong>.</p>
  <?php if (is_readable($cfgPath) && !$isAlreadyConfigured) { ?>
    <p class="warn">Boş/eksik yapılandırma dosyası tespit edildi. Bu adım yeni şifreyi kaydeder.</p>
  <?php } ?>
  <form method="post">
    <label for="password">Şifre (min. 10 karakter)</label>
    <input type="password" id="password" name="password" required minlength="10" autocomplete="new-password" />
    <label for="password2">Şifre tekrar</label>
    <input type="password" id="password2" name="password2" required minlength="10" autocomplete="new-password" />
    <button type="submit">Kaydet</button>
  </form>
</body>
</html>
