towerops/lib/towerops_web/controllers/api
Graham McIntire b252cb81b9 fix: 5 more high-severity bugs (H6, H8, H17, H18)
- H6: batch interface stats query in get_site_capacity_summary, replacing
  per-interface SELECT with a single grouped query
- H8: explicit expires_at check in MobileAuth and GraphQLAuth plugs as
  defense in depth — the query already filters expired rows, but a future
  refactor dropping the filter can't quietly re-enable revoked sessions
- H17: Reports LiveView (toggle/delete/run_now) now uses
  Reports.get_organization_report/2 to scope by organization_id, fixing
  IDOR where a user could manipulate other tenants' reports by ID
- H18: ToweropsWeb.Api.ParamFilter strips identity fields (id,
  organization_id, user_id, created_by_id, inserted_at, updated_at) from
  user-supplied API params; applied to devices, sites, checks, and
  escalation_policies create/update paths to prevent mass-assignment of
  tenant ownership fields if a changeset cast list ever drifts
2026-05-12 11:04:31 -05:00
..
v1 fix: 5 more high-severity bugs (H6, H8, H17, H18) 2026-05-12 11:04:31 -05:00
account_data_controller.ex fix: 11 critical security/correctness bugs from code audit 2026-05-12 10:20:52 -05:00
error_helpers.ex perf: disable Req retry for faster error tests 2026-03-10 16:19:31 -05:00
mobile_auth_controller.ex fix: return raw session token instead of hash in mobile QR login (#42) 2026-03-16 13:59:52 -05:00
mobile_controller.ex fix: 10 high-severity bugs from code audit (H1-H5, H14-H16, H27, H30) 2026-05-12 10:55:01 -05:00
param_filter.ex fix: 5 more high-severity bugs (H6, H8, H17, H18) 2026-05-12 11:04:31 -05:00