fix setup flow stale state and Stripe URL issues
All checks were successful
deploy / deploy (push) Successful in 1m9s
All checks were successful
deploy / deploy (push) Successful in 1m9s
Onboarding: re-fetch setup_status() after provider/Stripe connect instead of manually patching the local assigns, which could miss admin_created and leave users stuck on the setup page with no way forward. Dev config: respect PHX_HOST for endpoint URL so Stripe checkout redirects to the correct host instead of always using localhost. Stripe setup: detect private/LAN IPs (10.x, 172.16-31.x, 192.168.x) as unreachable, not just localhost — prevents creating webhook endpoints that Stripe can never reach. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -79,12 +79,25 @@ defmodule Berrypod.Stripe.Setup do
|
||||
end
|
||||
|
||||
@doc """
|
||||
Returns true if the app is running on localhost (Stripe can't reach it).
|
||||
Returns true if the app URL is unreachable from Stripe's servers
|
||||
(localhost, loopback, or private/LAN IPs).
|
||||
"""
|
||||
def localhost? do
|
||||
url = BerrypodWeb.Endpoint.url()
|
||||
uri = URI.parse(url)
|
||||
uri.host in ["localhost", "127.0.0.1", "0.0.0.0", "::1"]
|
||||
unreachable_host?(uri.host)
|
||||
end
|
||||
|
||||
defp unreachable_host?(host) when host in ["localhost", "0.0.0.0", "::1"], do: true
|
||||
|
||||
defp unreachable_host?(host) do
|
||||
case :inet.parse_address(String.to_charlist(host)) do
|
||||
{:ok, {127, _, _, _}} -> true
|
||||
{:ok, {10, _, _, _}} -> true
|
||||
{:ok, {172, b, _, _}} when b >= 16 and b <= 31 -> true
|
||||
{:ok, {192, 168, _, _}} -> true
|
||||
_ -> false
|
||||
end
|
||||
end
|
||||
|
||||
defp maybe_create_webhook(api_key) do
|
||||
|
||||
Reference in New Issue
Block a user