Sindbad~EG File Manager

Current Path : /home/copmadinaarea/thecopmadinaarea.org/portal/api/
Upload File :
Current File : /home/copmadinaarea/thecopmadinaarea.org/portal/api/verify-directory-code.php

<?php
require_once '../config/config.php';

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

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

$data = json_decode(file_get_contents('php://input'), true);
$membershipId = trim($data['membership_id'] ?? '');
$verificationCode = trim($data['verification_code'] ?? '');

if (empty($membershipId) || empty($verificationCode)) {
    echo json_encode(['success' => false, 'message' => 'Membership ID and verification code are required']);
    exit;
}

try {
    $db = Database::getInstance()->getConnection();
    
    // Find verification record
    $stmt = $db->prepare("
        SELECT id, member_id, email, is_verified, expires_at
        FROM public_directory_access
        WHERE membership_id = :membership_id
        AND verification_code = :verification_code
        AND is_verified = FALSE
        ORDER BY created_at DESC
        LIMIT 1
    ");
    $stmt->execute([
        'membership_id' => $membershipId,
        'verification_code' => $verificationCode
    ]);
    $access = $stmt->fetch(PDO::FETCH_ASSOC);
    
    if (!$access) {
        echo json_encode(['success' => false, 'message' => 'Invalid verification code. Please check and try again.']);
        exit;
    }
    
    // Check if expired
    if (strtotime($access['expires_at']) < time()) {
        echo json_encode(['success' => false, 'message' => 'Verification code has expired. Please request a new one.']);
        exit;
    }
    
    // Generate session token
    $sessionToken = bin2hex(random_bytes(32));
    
    // Mark as verified and store session token
    $stmt = $db->prepare("
        UPDATE public_directory_access
        SET is_verified = TRUE,
            verified_at = NOW(),
            session_token = :session_token
        WHERE id = :id
    ");
    $stmt->execute([
        'session_token' => $sessionToken,
        'id' => $access['id']
    ]);
    
    // Start session and store token
    if (session_status() === PHP_SESSION_NONE) {
        session_start();
    }
    $_SESSION['directory_access_token'] = $sessionToken;
    $_SESSION['directory_member_id'] = $access['member_id'];
    $_SESSION['directory_verified_at'] = time();
    
    echo json_encode([
        'success' => true,
        'message' => 'Verification successful! You can now access the directory.',
        'token' => $sessionToken
    ]);
    
} catch (Exception $e) {
    error_log('Directory code verification error: ' . $e->getMessage());
    echo json_encode([
        'success' => false,
        'message' => 'An error occurred. Please try again later.'
    ]);
}

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists