Skip to content

Conversation

@pandigresik
Copy link
Contributor

@pandigresik pandigresik commented Dec 12, 2025

Perbaikan issue #868

Global Rate Limiter Feature

Ringkasan

Fitur Global Rate Limiter telah ditambahkan ke aplikasi OpenKab untuk mengontrol jumlah request yang dapat dilakukan oleh setiap IP address dalam periode waktu tertentu.

Fitur Utama

  • ✅ Rate limiter global yang dapat diaktifkan/nonaktifkan melalui .env
  • ✅ Konfigurasi jumlah maksimal request dan periode waktu
  • ✅ Pengecualian untuk path tertentu (wildcard supported)
  • ✅ Pengecualian untuk IP address tertentu
  • ✅ Response headers informatif (X-RateLimit-*)
  • ✅ Response JSON untuk API requests
  • ✅ Dokumentasi lengkap dan test cases

Cara Mengaktifkan

Edit file .env dan set:

RATE_LIMITER_ENABLED=true
RATE_LIMITER_MAX_ATTEMPTS=60
RATE_LIMITER_DECAY_MINUTES=1

File yang Ditambahkan/Diubah

  1. Middleware: app/Http/Middleware/GlobalRateLimiter.php
  2. Konfigurasi: config/rate-limiter.php
  3. Environment: .env (ditambahkan konfigurasi baru)
  4. Kernel: app/Http/Kernel.php (registrasi middleware)
  5. Test: tests/Feature/GlobalRateLimiterTest.php

Default Values

  • Status: Disabled (false)
  • Max Attempts: 60 requests
  • Decay Minutes: 1 menit
  • Exclude Paths: [] (kosong)
  • Exclude IPs: [] (kosong)

Contoh Penggunaan

Production Environment

RATE_LIMITER_ENABLED=true
RATE_LIMITER_MAX_ATTEMPTS=100
RATE_LIMITER_DECAY_MINUTES=1

Development Environment

RATE_LIMITER_ENABLED=false

High Traffic API

RATE_LIMITER_ENABLED=true
RATE_LIMITER_MAX_ATTEMPTS=1000
RATE_LIMITER_DECAY_MINUTES=1

<img width="1366" height="768" alt="image" src="https://github.com/user-attachments/assets/690aa592-b0d0-4fa7-aeb6-2ca9e47a0e26" />

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants