refactor(admin): migrate ban list to new architecture
Move the ?act=ban_panel list to GET /admin/bans (+ /admin/bans/by-violations)
in the admin group. GetBanListUseCase + BanListRepositoryInterface with
EloquentBanListRepository (User joined to the most-recent ban per user via
joinSub, correlated bancount). BanListRowMapper composes AdminUserRowMapper
with active-ban highlight and violations-history button.
Amnesty (write, rights >= 9) is left in the legacy include for now (phase 4);
the Amnesty button points to /admin/ban_panel/?mod=amnesty. Both sidebars
now link to /admin/bans.
in the admin group. GetBanListUseCase + BanListRepositoryInterface with
EloquentBanListRepository (User joined to the most-recent ban per user via
joinSub, correlated bancount). BanListRowMapper composes AdminUserRowMapper
with active-ban highlight and violations-history button.
Amnesty (write, rights >= 9) is left in the legacy include for now (phase 4);
the Amnesty button points to /admin/ban_panel/?mod=amnesty. Both sidebars
now link to /admin/bans.