<?php
if (session_status() === PHP_SESSION_NONE) { session_start(); }
require_once '../../config.php';
header('Content-Type: application/json');

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $user_email = $_SESSION['verify_email'] ?? '';
    $submitted_otp = trim($_POST['otp'] ?? '');

    if (empty($user_email) || empty($submitted_otp)) {
        echo json_encode(['status' => 'error', 'message' => 'Invalid request.']); exit();
    }

    if (time() > ($_SESSION['otp_expire'] ?? 0)) {
        echo json_encode(['status' => 'error', 'message' => 'Verification code expired! Click resend.']); exit();
    }

    // ইউজারের আইডি এবং আগের ডাটাবেস টোকেন বের করা
    $stmt = $conn->prepare("SELECT id, remember_token FROM users WHERE email=? AND otp=? AND is_verified=0");
    $stmt->bind_param("ss", $user_email, $submitted_otp);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result->num_rows > 0) {
        $user = $result->fetch_assoc();
        $user_id = $user['id'];
        $db_token = $user['remember_token'];

        $cookie_token = '';
        $hashed_token = '';

        // চেক করা হচ্ছে ব্রাউজারে আগে থেকেই সাইনআপের কুকি আছে কিনা
        if (isset($_COOKIE['auth_remember'])) {
            $existing_cookie_token = $_COOKIE['auth_remember'];
            $existing_hashed = hash('sha256', $existing_cookie_token);
            
            // যদি ব্রাউজারের কুকি এবং ডাটাবেসের কুকি মিলে যায় (একই ব্রাউজার থেকে ভেরিফাই করলে)
            if ($existing_hashed === $db_token) {
                $cookie_token = $existing_cookie_token;
                $hashed_token = $db_token; // আগেরটাই থাকবে
            } else {
                // যদি না মিলে (অন্য কোনো সমস্যার কারণে), নতুন জেনারেট করা হবে
                $cookie_token = bin2hex(random_bytes(32));
                $hashed_token = hash('sha256', $cookie_token);
            }
        } else {
            // যদি কুকি না থাকে (যেমন ফোন বা অন্য পিসি থেকে মেইল ওপেন করে ভেরিফাই করলে)
            $cookie_token = bin2hex(random_bytes(32));
            $hashed_token = hash('sha256', $cookie_token);
        }

        // ডাটাবেস আপডেট (ভেরিফাইড করা, OTP মুছে ফেলা এবং হ্যাশ করা টোকেন সেভ করা)
        $update = $conn->prepare("UPDATE users SET is_verified=1, otp=NULL, remember_token=? WHERE id=?");
        $update->bind_param("si", $hashed_token, $user_id);
        $update->execute();
        
        // ৫ বছরের জন্য Secure Browser Cookie সেট বা রিফ্রেশ করা
        $cookie_expire = time() + 157680000; // 5 years in seconds
        $is_secure = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on';
        setcookie('auth_remember', $cookie_token, $cookie_expire, "/", "", $is_secure, true); // HttpOnly = true (JavaScript হ্যাক প্রতিরোধ)
        
        // সেশন সেট করা
        $_SESSION['user_logged_in'] = true;
        $_SESSION['user_id'] = $user_id;
        
        // ভেরিফিকেশনের পর অদরকারী সেশন মুছে ফেলা
        unset($_SESSION['verify_email']);
        unset($_SESSION['otp_expire']);
        
        echo json_encode(['status' => 'success']);
    } else {
        echo json_encode(['status' => 'error', 'message' => 'Invalid OTP code. Please try again.']);
    }
}
?>