server: gate suspended users out of profile and synckit billing mutations
AuthUser refreshes user.suspended on every request but most handlers
that read it are mutation paths; these five were missed:
- users/profile.rs update_profile — display name / bio edits
- users/profile.rs disconnect_stripe — payout settings
- synckit/billing.rs setup — Stripe customer creation
- synckit/billing.rs activate — subscription creation
- synckit/billing.rs patch — subscription re-pricing
Each now calls user.check_not_suspended()? after extraction.
Deliberately NOT gating synckit/billing.rs cancel — letting a
suspended developer wind down their app's subscription so they
stop being charged is humane and doesn't expose new risk.
Author: Max J. <87768334+MaxJMath@users.noreply.github.com> · 2026-05-25 23:44 UTC