/home/ejrndhmu/tokobiolink.com/forgot_password.php
<?php
require_once 'config/database.php';
require_once 'includes/functions.php';
require_once 'includes/email.php';

header('Content-Type: application/json');

// Start secure session
startSecureSession();

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    echo json_encode(['success' => false, 'message' => 'Method not allowed']);
    exit();
}

$email = trim($_POST['email'] ?? '');

if (empty($email)) {
    echo json_encode(['success' => false, 'message' => 'Email tidak boleh kosong']);
    exit();
}

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo json_encode(['success' => false, 'message' => 'Format email tidak valid']);
    exit();
}

try {
    $db = new Database();
    
    // Check if email exists
    $db->query("SELECT id, full_name, email FROM users WHERE email = :email AND status = 'active'");
    $db->bind(':email', $email);
    $user = $db->single();
    
    if (!$user) {
        echo json_encode(['success' => false, 'message' => 'Email tidak ditemukan atau akun tidak aktif']);
        exit();
    }
    
    // Generate new password
    $newPassword = generateRandomPassword(8);
    $hashedPassword = hashPassword($newPassword);
    
    // Update password in database
    $db->query("UPDATE users SET password = :password WHERE id = :id");
    $db->bind(':password', $hashedPassword);
    $db->bind(':id', $user['id']);
    $db->execute();
    
    // Send email with new password
    $subject = 'Reset Password - ' . getSiteName();
    $message = "Halo {$user['full_name']},\n\n";
    $message .= "Password Anda telah direset. Berikut adalah password baru Anda:\n\n";
    $message .= "Email: {$user['email']}\n";
    $message .= "Password Baru: {$newPassword}\n\n";
    $message .= "Silakan login dengan password baru ini dan segera ganti password Anda di pengaturan akun.\n\n";
    $message .= "Terima kasih,\n";
    $message .= getSiteName();
    
    $emailSent = sendMailketingEmail($user['email'], $subject, $message);
    
    if ($emailSent) {
        echo json_encode([
            'success' => true, 
            'message' => 'Password baru telah dikirim ke email Anda. Silakan cek inbox atau folder spam.'
        ]);
    } else {
        echo json_encode([
            'success' => false, 
            'message' => 'Gagal mengirim email. Silakan coba lagi atau hubungi administrator.'
        ]);
    }
    
} catch (Exception $e) {
    error_log('Forgot password error: ' . $e->getMessage());
    echo json_encode([
        'success' => false, 
        'message' => 'Terjadi kesalahan sistem. Silakan coba lagi.'
    ]);
}

// Function to generate random password
function generateRandomPassword($length = 8) {
    $characters = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
    $password = '';
    $charactersLength = strlen($characters);
    
    for ($i = 0; $i < $length; $i++) {
        $password .= $characters[rand(0, $charactersLength - 1)];
    }
    
    return $password;
}

// Function to get site name
function getSiteName() {
    return 'Kiblat Digital';
}
?>