* fix(oidc): honor http issuer scheme during OIDC discovery
Self-hosted IdPs served over plain HTTP (no SSL) failed OIDC login with
"Failed to open TCP connection to <issuer>:443 (Connection refused)".
The openid_connect/swd gems hardcode discovery to HTTPS: SWD.url_builder
defaults to URI::HTTPS, and OpenIDConnect::Discovery::Provider::Config::Resource
drops the issuer's scheme, rebuilding the .well-known URL from host/port only.
So an http:// issuer is upgraded to https:443 and never connects. (This is why
the in-app "Test connection" passes -- it uses Faraday against the raw issuer
URL and never goes through the gem.)
Patch Config::Resource to remember the issuer's scheme and build the discovery
endpoint with URI::HTTP or URI::HTTPS accordingly. Per-request, no global mutable
state, so mixed http/https providers coexist. Only discovery needs patching: the
endpoints it returns are absolute and rack-oauth2 preserves an existing scheme,
so the token/userinfo/jwks calls follow over http automatically.
Verified against openid_connect 2.3.1 / swd 2.0.3.
Fixes#2844
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(oidc): scheme-aware port and discovery cache key
Address automated review feedback on the OIDC http-discovery patch:
- Preserve explicitly configured non-default ports (http on 443, https on 80)
by omitting only the scheme's own default port instead of both 80 and 443.
- Override the discovery cache_key to include scheme/port/path (the gem keyed
on host alone), so an http:// issuer can't reuse an https:// issuer's cached
metadata on the same host. Latent today (default SWD cache is a no-op) but
removed to keep the override self-consistent.
Adds regression tests for both cases.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* test(oidc): cover port and path as cache-key components
Extend the discovery cache-key test to assert scheme, port, and path each
produce a distinct key on the same host, per review feedback.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* Update hard-coded currency UI with currency specific params
* Rename extension methods to match currency option names; Move cents extension to numeric class extension
* Use currency's precision to show the cents part in accounts show page
---------
Co-authored-by: Sriram Krishnan <sriram@seafoodsouq.com>