feat(admin-web): IP auto-bans list view and unban action #330
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/BUNYIP-320-web-ip-bans"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Add an /admin/ip-bans page to bunyip-web that lists the currently-active IP auto-bans (IP, reason, strikes, banned-at, expires-at) via the subtask 7 endpoint GET /v1/admin/ip-bans, with an Unban button per row that POSTs to a lift handler (DELETE /v1/admin/ip-bans/{ip}) and redirects back with a success/error toast, mirroring the existing admin POST -> redirect-with-?toast_ok= pattern.
The API client gains ip_bans() and unban_ip() in api/admin.rs plus an AdminIpBan type mirroring the domain BanInfo serialization. The unban IP travels in a hidden form field so an IPv6 address never sits in the web route path; unban_ip percent-encodes it into the API path. The page is AdminUser-guarded like every other admin page and linked from the admin sidebar nav.
#BUNYIP-320
Add an /admin/ip-bans page to bunyip-web that lists the currently-active IP auto-bans (IP, reason, strikes, banned-at, expires-at) via the subtask 7 endpoint GET /v1/admin/ip-bans, with an Unban button per row that POSTs to a lift handler (DELETE /v1/admin/ip-bans/{ip}) and redirects back with a success/error toast, mirroring the existing admin POST -> redirect-with-?toast_ok= pattern. The API client gains ip_bans() and unban_ip() in api/admin.rs plus an AdminIpBan type mirroring the domain BanInfo serialization. The unban IP travels in a hidden form field so an IPv6 address never sits in the web route path; unban_ip percent-encodes it into the API path. The page is AdminUser-guarded like every other admin page and linked from the admin sidebar nav. #BUNYIP-320