trypost/app/Http
Paulo Castellano f36881cb6a Fail loud on a missing coupon and block unpaid extra workspaces
Two hardening fixes for the paid first month:

- FirstMonthCheckoutDiscount throws when the paid first month is enabled
  but STRIPE_FIRST_MONTH_COUPON_ID is unset, instead of silently charging
  every new customer the full price with no discount.
- Guard workspace store() with the same active-subscription check create()
  already applies, so a direct POST can't bootstrap a second billable
  workspace and inflate checkout quantity past the fixed first-month coupon.
2026-07-09 15:37:25 -03:00
..
Controllers Fail loud on a missing coupon and block unpaid extra workspaces 2026-07-09 15:37:25 -03:00
Middleware Replace the boolean isRtl() with a direction() accessor on ContentLanguage 2026-07-03 18:57:09 -03:00
Requests Save the autofilled site logo as the workspace logo on brand settings update 2026-07-03 20:05:54 -03:00
Resources fix(linkedin): show connected company page on the accounts and onboarding grids 2026-06-24 21:23:27 -03:00