Edric Li
90798f14b5
feat(api-key): add IP whitelist/blacklist restriction and usage log IP tracking
...
- Add IP restriction feature for API keys (whitelist/blacklist with CIDR support)
- Add IP address logging to usage logs (admin-only visibility)
- Remove billing_type column from usage logs UI (redundant)
- Use generic "Access denied" error message for security
Backend:
- New ip package with IP/CIDR validation and matching utilities
- Database migrations for ip_whitelist, ip_blacklist (api_keys) and ip_address (usage_logs)
- Middleware IP restriction check after API key validation
- Input validation for IP/CIDR patterns on create/update
Frontend:
- API key form with enable toggle for IP restriction
- Shield icon indicator in table for keys with IP restriction
- Removed billing_type filter and column from usage views
2026-01-09 21:24:59 +08:00
..
2026-01-07 16:59:35 +08:00
2025-12-29 10:03:27 +08:00
2026-01-09 21:24:59 +08:00
2025-12-29 10:03:27 +08:00
2026-01-08 23:07:00 +08:00
2026-01-04 19:28:20 +08:00
2026-01-04 19:28:20 +08:00
2026-01-09 21:24:59 +08:00
2026-01-04 19:28:20 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2026-01-09 21:24:59 +08:00
2026-01-09 21:24:59 +08:00
2025-12-31 15:31:26 +08:00
2026-01-09 21:24:59 +08:00
2026-01-04 19:28:20 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2026-01-07 16:59:35 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2026-01-07 16:59:35 +08:00
2026-01-07 16:59:35 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-09 21:24:59 +08:00
2026-01-04 19:28:20 +08:00
2026-01-04 19:28:20 +08:00
2026-01-09 21:24:59 +08:00
2026-01-09 21:24:59 +08:00
2026-01-04 19:28:20 +08:00
2026-01-03 06:37:08 -08:00
2026-01-04 19:28:20 +08:00
2026-01-04 19:28:20 +08:00
2026-01-08 23:07:00 +08:00
2025-12-29 10:03:27 +08:00
2026-01-04 19:28:20 +08:00
2026-01-08 23:07:00 +08:00
2026-01-08 23:07:00 +08:00
2026-01-09 21:24:59 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 15:31:26 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 15:31:26 +08:00
2025-12-29 10:03:27 +08:00
2026-01-04 19:28:20 +08:00
2026-01-09 21:24:59 +08:00
2025-12-31 14:11:57 +08:00
2026-01-04 19:28:20 +08:00
2026-01-09 21:24:59 +08:00
2026-01-09 21:24:59 +08:00
2026-01-04 19:28:20 +08:00
2025-12-29 10:03:27 +08:00
2026-01-04 19:28:20 +08:00
2026-01-04 19:28:20 +08:00
2026-01-04 19:28:20 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2025-12-29 10:03:27 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2026-01-01 18:58:34 +08:00
2025-12-31 14:11:57 +08:00
2025-12-29 10:03:27 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00
2025-12-31 14:11:57 +08:00