import logging
from functools import wraps
from flask import request, jsonify
from config import Config

logger = logging.getLogger(__name__)

def ip_whitelist_required(f):
    """Decorator untuk memeriksa whitelist IP (hanya untuk akses dasar)"""
    @wraps(f)
    def decorated_function(*args, **kwargs):
        client_ip = request.remote_addr
        forwarded_for = request.headers.get('X-Forwarded-For')
        
        # Jika ada X-Forwarded-For, gunakan IP asli
        if forwarded_for:
            client_ip = forwarded_for.split(',')[0].strip()
        
        # Catat IP yang mengakses
        logger.info(f"Access from IP: {client_ip}")
        
        # Cek whitelist
        if client_ip not in Config.IP_WHITELIST:
            logger.warning(f"Non-whitelisted IP accessing: {client_ip}")
            # Jangan tolak di sini, biarkan rate_limit yang menangani
            # Tapi kita tetap lanjutkan dengan catatan
        
        # Selalu lanjutkan, rate_limit_decorator yang akan menangani pembatasan
        return f(*args, **kwargs)
    
    return decorated_function