Merchants can now register domains (e.g., myloyaltyprogram.lu) that all their stores inherit. Individual stores can override with their own custom domain. Resolution priority: StoreDomain > MerchantDomain > subdomain. - Add MerchantDomain model, schema, service, and admin API endpoints - Add merchant domain fallback in platform and store context middleware - Add Merchant.primary_domain and Store.effective_domain properties - Add Alembic migration for merchant_domains table - Update loyalty user journey docs with subscription & domain setup flow - Add unit tests (50 passing) and integration tests (15 passing) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
45 lines
2.0 KiB
Python
45 lines
2.0 KiB
Python
# app/modules/tenancy/routes/api/admin.py
|
|
"""
|
|
Tenancy module admin API routes.
|
|
|
|
Aggregates all admin tenancy routes:
|
|
- /auth/* - Admin authentication (login, logout, /me, platform selection)
|
|
- /admin-users/* - Admin user management (super admin only)
|
|
- /users/* - Platform user management
|
|
- /merchants/* - Merchant management
|
|
- /platforms/* - Platform management (super admin only)
|
|
- /stores/* - Store management
|
|
- /store-domains/* - Store domain configuration
|
|
- /modules/* - Platform module management
|
|
- /module-config/* - Module configuration management
|
|
|
|
The tenancy module owns identity and organizational hierarchy.
|
|
"""
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from .admin_auth import admin_auth_router
|
|
from .admin_users import admin_users_router
|
|
from .admin_platform_users import admin_platform_users_router
|
|
from .admin_merchants import admin_merchants_router
|
|
from .admin_platforms import admin_platforms_router
|
|
from .admin_stores import admin_stores_router
|
|
from .admin_store_domains import admin_store_domains_router
|
|
from .admin_merchant_domains import admin_merchant_domains_router
|
|
from .admin_modules import router as admin_modules_router
|
|
from .admin_module_config import router as admin_module_config_router
|
|
|
|
admin_router = APIRouter()
|
|
|
|
# Aggregate all tenancy admin routes
|
|
admin_router.include_router(admin_auth_router, tags=["admin-auth"])
|
|
admin_router.include_router(admin_users_router, tags=["admin-admin-users"])
|
|
admin_router.include_router(admin_platform_users_router, tags=["admin-users"])
|
|
admin_router.include_router(admin_merchants_router, tags=["admin-merchants"])
|
|
admin_router.include_router(admin_platforms_router, tags=["admin-platforms"])
|
|
admin_router.include_router(admin_stores_router, tags=["admin-stores"])
|
|
admin_router.include_router(admin_store_domains_router, tags=["admin-store-domains"])
|
|
admin_router.include_router(admin_merchant_domains_router, tags=["admin-merchant-domains"])
|
|
admin_router.include_router(admin_modules_router, tags=["admin-modules"])
|
|
admin_router.include_router(admin_module_config_router, tags=["admin-module-config"])
|