refactor: rename platform_domain → main_domain to avoid confusion with platform.domain
Some checks failed
Some checks failed
The setting `settings.platform_domain` (the global/main domain like "wizard.lu") was easily confused with `platform.domain` (per-platform domain like "rewardflow.lu"). Renamed to `settings.main_domain` / `MAIN_DOMAIN` env var across the entire codebase. Also updated docs to reflect the refactored store detection logic with `is_platform_domain` / `is_subdomain_of_platform` guards. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -92,12 +92,15 @@ INFO Response: 200 for GET /admin/dashboard (0.143s)
|
||||
**Purpose**: Detect which store's storefront the request is for (multi-tenant core)
|
||||
|
||||
**What it does**:
|
||||
- Detects store from:
|
||||
- Custom domain (e.g., `customdomain.com`) — via `StoreDomain` lookup (optionally scoped to a platform via `StoreDomain.platform_id`)
|
||||
- Subdomain with two-step lookup:
|
||||
1. `StorePlatform.custom_subdomain` — per-platform subdomain overrides (e.g., `wizatech-rewards.rewardflow.lu`)
|
||||
2. `Store.subdomain` — standard subdomain fallback (e.g., `wizatech.omsflow.lu`)
|
||||
- Path prefix (e.g., `/store/store1/` or `/stores/store1/`)
|
||||
- Guards based on platform domain awareness:
|
||||
- When `host == platform.domain` (e.g., `rewardflow.lu`): Methods 1 & 2 are skipped (the platform's own domain is not a store)
|
||||
- When host is a subdomain of `platform.domain` (e.g., `acme.rewardflow.lu`): Method 1 (custom domain) is skipped
|
||||
- Detects store from (in priority order):
|
||||
1. Custom domain (e.g., `customdomain.com`) — via `StoreDomain` lookup (skipped on platform domains)
|
||||
2. Subdomain with two-step lookup:
|
||||
- `StorePlatform.custom_subdomain` — per-platform subdomain overrides (e.g., `wizatech-rewards.rewardflow.lu`)
|
||||
- `Store.subdomain` — standard subdomain fallback (e.g., `wizatech.omsflow.lu`)
|
||||
3. Path prefix (e.g., `/store/store1/` or `/stores/store1/`) — always runs as fallback
|
||||
- Queries database to find store by domain or code
|
||||
- Injects store object and platform into `request.state.store`
|
||||
- Extracts "clean path" (path without store prefix)
|
||||
|
||||
Reference in New Issue
Block a user