<?php
session_start(); // Mulai sesi di awal skrip

// Sertakan file koneksi database Anda.
// Karena process_kader_login.php berada di folder 'api',
// dan db_connect.php juga di folder 'api', maka path-nya langsung.
require_once 'db_connect.php'; 

/**
 * Fungsi pembantu untuk menghasilkan CAPTCHA baru.
 * Penting: Fungsi ini harus ada di file ini karena akan dipanggil
 * saat terjadi kesalahan login atau CAPTCHA.
 * Ini memastikan CAPTCHA selalu diperbarui setelah setiap upaya login yang gagal.
 */
function generateNewCaptchaForLoginError() {
    $num1 = rand(1, 9);
    $num2 = rand(1, 9);
    $_SESSION['captcha_answer'] = $num1 + $num2;
    return "$num1 + $num2 = ?";
}

// Hanya proses jika request method adalah POST
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    $user_captcha_answer = trim($_POST['captcha']); // Ambil jawaban CAPTCHA dari form

    // 1. Validasi input dasar: pastikan semua kolom terisi
    if (empty($username) || empty($password) || empty($user_captcha_answer)) {
        // Hasilkan CAPTCHA baru jika ada input yang kosong
        $_SESSION['captcha_text'] = generateNewCaptchaForLoginError(); 
        // Redirect kembali ke halaman login dengan pesan error
        // Asumsi kader_login.php berada di 'auth/' dan process_kader_login.php di 'api/'
        header('Location: ../auth/kader_login.php?error=' . urlencode('Semua kolom harus diisi.'));
        exit();
    }

    // 2. Validasi CAPTCHA
    // Pastikan session captcha_answer ada dan jawaban pengguna sesuai
    if (!isset($_SESSION['captcha_answer']) || (int)$user_captcha_answer !== (int)$_SESSION['captcha_answer']) {
        // CAPTCHA salah atau sesi CAPTCHA tidak ada (misal sesi kadaluarsa)
        
        // Hasilkan CAPTCHA baru agar pengguna mendapatkan pertanyaan baru
        $_SESSION['captcha_text'] = generateNewCaptchaForLoginError(); 
        
        // Redirect kembali ke halaman login dengan pesan error CAPTCHA
        header('Location: ../auth/kader_login.php?error=' . urlencode('Jawaban CAPTCHA salah. Silakan coba lagi.'));
        exit();
    }
    
    // CAPTCHA berhasil divalidasi. Hapus dari sesi untuk mencegah replay attacks.
    unset($_SESSION['captcha_answer']);
    unset($_SESSION['captcha_text']);

    // 3. Proses otentikasi username dan password
    try {
        // Query untuk mencari kader berdasarkan username di tabel kader_posyandu
        $stmt = $pdo->prepare("SELECT id, username, password, full_name FROM kader_posyandu WHERE username = :username");
        $stmt->bindParam(':username', $username);
        $stmt->execute();
        $kader = $stmt->fetch(PDO::FETCH_ASSOC);

        // Verifikasi apakah kader ditemukan dan password cocok
        if ($kader && password_verify($password, $kader['password'])) {
            // Login berhasil
            // Set variabel sesi untuk menandai kader sudah login
            $_SESSION['kader_id'] = $kader['id'];
            $_SESSION['kader_username'] = $kader['username'];
            $_SESSION['kader_full_name'] = $kader['full_name'];
            $_SESSION['kader_logged_in'] = true; // Flag umum untuk status login

            // Redirect ke halaman dashboard kader setelah login sukses
            // Asumsi kader_dashboard.php berada di root project
            header('Location: ../kader/'); 
            exit(); // Penting: Hentikan eksekusi skrip setelah redirect
        } else {
            // Login gagal (username tidak ditemukan atau password salah)
            
            // Hasilkan CAPTCHA baru untuk upaya login berikutnya
            $_SESSION['captcha_text'] = generateNewCaptchaForLoginError(); 
            
            // Redirect kembali ke halaman login dengan pesan error
            header('Location: ../auth/kader_login.php?error=' . urlencode('Username atau password salah.'));
            exit(); // Penting: Hentikan eksekusi skrip
        }

    } catch (PDOException $e) {
        // Tangani kesalahan database
        error_log("Database error during kader login: " . $e->getMessage()); // Catat error ke log server
        
        // Hasilkan CAPTCHA baru juga saat error database
        $_SESSION['captcha_text'] = generateNewCaptchaForLoginError();
        
        // Redirect kembali ke halaman login dengan pesan error umum
        header('Location: ../auth/kader_login.php?error=' . urlencode('Terjadi kesalahan sistem. Silakan coba lagi nanti.'));
        exit(); // Penting: Hentikan eksekusi skrip
    }
} else {
    // Jika skrip diakses langsung tanpa metode POST (misal, diketik di browser)
    // Redirect kembali ke halaman login
    header('Location: ../auth/kader_login.php');
    exit();
}
?>