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-26 16:45:40 +08:00
2026-01-07 16:59:35 +08:00
2026-01-07 16:59:35 +08:00
2026-01-05 14:41:08 +08:00
2026-01-06 22:19:07 +08:00
2026-01-07 16:59:35 +08:00
2026-01-01 18:59:38 +08:00
2026-01-08 21:44:18 +08:00
2026-01-05 17:07:29 +08:00
2026-01-08 23:13:57 +08:00
2026-01-05 00:56:48 +08:00
2026-01-08 20:06:32 +08:00
2026-01-05 17:14:06 +08:00
2026-01-03 06:29:02 -08:00
2025-12-31 10:33:00 +08:00
2026-01-03 06:29:02 -08:00
2025-12-31 16:25:45 +08:00
2025-12-31 23:37:51 +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
2025-12-29 15:22:50 +08:00
2026-01-06 11:36:38 +08:00
2025-12-25 17:15:01 +08:00
2025-12-31 08:50:12 +08:00
2026-01-04 22:10:32 +08:00
2026-01-05 17:07:29 +08:00
2026-01-05 17:07:29 +08:00
2026-01-08 23:07:00 +08:00
2026-01-03 06:32:51 -08:00
2026-01-05 14:41:08 +08:00
2026-01-04 19:28:20 +08:00
2025-12-28 09:49:54 +08:00
2026-01-04 22:49:40 +08:00
2025-12-18 13:50:39 +08:00
2026-01-06 11:36:38 +08:00
2026-01-08 23:13:57 +08:00
2026-01-04 10:45:18 +08:00
2026-01-05 00:56:48 +08:00
2026-01-04 18:26:39 -08:00
2025-12-31 08:50:12 +08:00
2026-01-09 21:24:59 +08:00
2026-01-01 04:21:18 +08:00
2026-01-08 23:07:00 +08:00
2026-01-08 23:13:57 +08:00
2026-01-04 15:36:00 +08:00
2026-01-04 21:06:12 +08:00
2025-12-26 00:11:03 -08:00
2026-01-04 15:36:00 +08:00
2025-12-26 00:11:03 -08:00
2026-01-01 04:29:22 +08:00
2025-12-31 16:25:45 +08:00
2025-12-26 00:11:03 -08:00
2025-12-31 23:42:01 +08:00
2026-01-05 17:07:29 +08:00
2026-01-08 23:07:00 +08:00
2025-12-31 11:43:58 +08:00
2025-12-25 17:15:01 +08:00
2025-12-27 20:42:00 +08:00
2026-01-05 14:41:08 +08:00
2026-01-09 21:24:59 +08:00
2025-12-26 16:45:40 +08:00
2026-01-06 10:49:26 +08:00
2026-01-08 21:20:12 +08:00
2025-12-26 16:45:40 +08:00
2026-01-03 06:29:02 -08:00
2026-01-04 15:36:00 +08:00
2025-12-26 16:45:40 +08:00
2025-12-31 23:42:01 +08:00
2026-01-04 23:17:15 +08:00
2025-12-26 16:45:40 +08:00
2026-01-04 23:17:15 +08:00
2025-12-31 23:42:01 +08:00
2026-01-03 06:34:00 -08:00
2025-12-28 09:49:54 +08:00
2026-01-04 15:59:21 +08:00
2026-01-04 19:28:20 +08:00
2025-12-31 16:25:45 +08:00
2025-12-31 23:42:01 +08:00
2026-01-04 19:28:20 +08:00
2026-01-09 21:24:59 +08:00
2026-01-06 22:19:07 +08:00
2026-01-03 06:37:08 -08:00
2026-01-01 18:58:34 +08:00
2026-01-01 19:09:06 +08:00
2025-12-26 16:45:40 +08:00
2025-12-26 16:45:40 +08:00
2026-01-04 19:28:20 +08:00
2026-01-07 16:59:35 +08:00