<?php
session_start();
header('Content-Type: application/json');

// Pastikan pengguna adalah siswa dan sudah login
if (!isset($_SESSION['user_logged_in']) || $_SESSION['user_type'] != 'siswa') {
    echo json_encode(['status' => 'error', 'message' => 'Akses ditolak.']);
    exit();
}

include '../config/koneksi.php';

// Ambil ID siswa dari sesi, yang disimpan sebagai 'id_user'
$id_siswa = $_SESSION['id_user'];
$password_lama = $_POST['password_lama'] ?? '';
$password_baru = $_POST['password_baru'] ?? '';
$konfirmasi_password = $_POST['konfirmasi_password'] ?? '';

// Validasi input
if (empty($password_lama) || empty($password_baru) || empty($konfirmasi_password)) {
    echo json_encode(['status' => 'error', 'message' => 'Semua field wajib diisi.']);
    exit();
}

if ($password_baru !== $konfirmasi_password) {
    echo json_encode(['status' => 'error', 'message' => 'Password baru dan konfirmasi password tidak cocok.']);
    exit();
}

if (strlen($password_baru) < 6) {
    echo json_encode(['status' => 'error', 'message' => 'Password baru minimal 6 karakter.']);
    exit();
}

try {
    // Perbaikan: Ambil password lama dari tabel 'siswa', bukan 'users'
    $stmt = $pdo->prepare("SELECT password FROM siswa WHERE id_siswa = ?");
    $stmt->execute([$id_siswa]);
    $user = $stmt->fetch();

    if (!$user || !password_verify($password_lama, $user['password'])) {
        echo json_encode(['status' => 'error', 'message' => 'Password lama salah.']);
        exit();
    }

    // Hash password baru dan update di database
    $hashed_password = password_hash($password_baru, PASSWORD_DEFAULT);
    
    // Perbaikan: Update password di tabel 'siswa'
    $stmt_update = $pdo->prepare("UPDATE siswa SET password = ? WHERE id_siswa = ?");
    $stmt_update->execute([$hashed_password, $id_siswa]);

    echo json_encode(['status' => 'success', 'message' => 'Password berhasil diubah.']);

} catch (PDOException $e) {
    echo json_encode(['status' => 'error', 'message' => 'Terjadi kesalahan database: ' . $e->getMessage()]);
}
?>