<?php
// api/login.php

header('Content-Type: application/json');
require_once 'db_connect.php'; // Hubungkan ke database

// Izinkan akses dari origin tertentu (penting untuk AJAX)
// Untuk pengembangan, bisa * tapi di produksi harus spesifik domain Anda
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Authorization');

// Tangani preflight OPTIONS request untuk CORS
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
    http_response_code(200);
    exit();
}

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $input = json_decode(file_get_contents('php://input'), true);

    $emailOrUsername = $input['email_or_username'] ?? '';
    $password = $input['password'] ?? '';
    $captchaAnswer = $input['captcha_answer'] ?? ''; // Jika Anda mengirim CAPTCHA dari frontend

    // --- CAPTCHA Verification (Placeholder) ---
    // Jika Anda menggunakan CAPTCHA sisi server (misal reCAPTCHA), lakukan verifikasi di sini.
    // Untuk CAPTCHA sederhana yang kita pakai di frontend, Anda bisa abaikan ini
    // atau simpan jawaban CAPTCHA di session dan verifikasi di sini.
    // Untuk demo, kita abaikan verifikasi CAPTCHA di backend login ini.

    if (empty($emailOrUsername) || empty($password)) {
        echo json_encode(['success' => false, 'message' => 'Email/Username dan Password harus diisi.']);
        exit();
    }

    try {
        // Cari pengguna berdasarkan email atau username
        // *** PERUBAHAN DI SINI: MENAMBAHKAN 'nik' KE DALAM SELECT STATEMENT ***
        $stmt = $pdo->prepare("SELECT id, nik, password_hash, is_verified FROM users WHERE email_or_username = :email_or_username");
        $stmt->execute([':email_or_username' => $emailOrUsername]);
        $user = $stmt->fetch();

        if ($user) {
            // Verifikasi password
            if (password_verify($password, $user['password_hash'])) {
                // Cek apakah akun sudah terverifikasi
                if ($user['is_verified'] == 1) {
                    // Login berhasil
                    session_start(); // Pastikan session_start() ada
                    $_SESSION['user_id'] = $user['id'];
                    $_SESSION['user_nik'] = $user['nik']; // <<< TAMBAHAN PENTING INI
                    $_SESSION['logged_in'] = true;

                    // Opsional: Anda bisa mengembalikan NIK di respons JSON juga jika frontend membutuhkannya
                    echo json_encode(['success' => true, 'message' => 'Login berhasil!', 'user_id' => $user['id'], 'user_nik' => $user['nik']]);
                } else {
                    echo json_encode(['success' => false, 'message' => 'Akun Anda belum terverifikasi. Silakan verifikasi melalui OTP saat pendaftaran.']);
                }
            } else {
                echo json_encode(['success' => false, 'message' => 'Email/Username atau password salah.']);
            }
        } else {
            echo json_encode(['success' => false, 'message' => 'Email/Username atau password salah.']);
        }
    } catch (\PDOException $e) {
        // Catat error ke log server untuk debugging
        error_log("Login error: " . $e->getMessage());
        echo json_encode(['success' => false, 'message' => 'Terjadi kesalahan server.']);
    }
} else {
    echo json_encode(['success' => false, 'message' => 'Metode request tidak diizinkan.']);
}
?>