Session 13: The Slate, Africa geo-restriction, OAuth providers, PropRow + GameCard (1311 tests)
This commit is contained in:
+10
-1
@@ -218,10 +218,11 @@ Container runtime (Session 9 finding):
|
||||
in production and the container OOM-loops (44 restarts observed on
|
||||
the live host before the fix was identified).
|
||||
|
||||
### Pricing tiers (Session 12 — Africa tier added)
|
||||
### Pricing tiers (Session 12 — Africa tier added; Session 13 — geo-gated)
|
||||
| Var | Required | Default | Used By | Doc? |
|
||||
| ---------------------------- | -------- | ------- | ---------------------------------- | ---- |
|
||||
| `STRIPE_PRICE_AFRICA` | no | (none) | `web/components/Pricing`, `stripeService` (post-DB-CHECK migration) | ✓ S12 |
|
||||
| Cloudflare `CF-IPCountry` | n/a | (none) | `middleware.ts` → `x-vyndr-country` → `useRegion()` | ✓ S13 |
|
||||
|
||||
**Blocker**: the existing migrations (001 + 011) declare `tier IN
|
||||
('free','analyst','desk')` as a CHECK constraint on `users.tier` and
|
||||
@@ -233,6 +234,14 @@ follow-up: manual SQL to drop + re-add the CHECK across both tables
|
||||
including 'africa' (cannot be done in this session per the no-migration
|
||||
rule).
|
||||
|
||||
**Session 13 — Africa tier visibility is now driven by real IP geo**
|
||||
(Cloudflare `CF-IPCountry` header), not by locale. The middleware
|
||||
copies `CF-IPCountry` to `x-vyndr-country`; the root layout reads it
|
||||
into `LocaleProvider`; `useRegion()` exposes `inAfrica: boolean`. The
|
||||
Pricing component filters the Africa tier out of the render entirely
|
||||
when `inAfrica === false`. Empty header (traffic bypassing Cloudflare)
|
||||
degrades closed.
|
||||
|
||||
### Internationalization (Session 12)
|
||||
| Var / file | Required | Default | Used By | Doc? |
|
||||
| ---------------------------- | -------- | ------- | ---------------------------------- | ---- |
|
||||
|
||||
Reference in New Issue
Block a user