Improve demo tennat and user get
This commit is contained in:
@@ -34,6 +34,13 @@ DEMO_TENANT_IDS = {
|
||||
str(DEMO_TENANT_CHILD_3), # Enterprise chain child 3
|
||||
}
|
||||
|
||||
# Demo user IDs - Maps demo account type to actual user UUIDs from fixture files
|
||||
# These IDs are the owner IDs from the respective 01-tenant.json files
|
||||
DEMO_USER_IDS = {
|
||||
"professional": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6", # María García López (professional/01-tenant.json -> owner.id)
|
||||
"enterprise": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7" # Director (enterprise/parent/01-tenant.json -> owner.id)
|
||||
}
|
||||
|
||||
# Allowed operations for demo accounts (limited write)
|
||||
DEMO_ALLOWED_OPERATIONS = {
|
||||
# Read operations - all allowed
|
||||
@@ -185,19 +192,21 @@ class DemoMiddleware(BaseHTTPMiddleware):
|
||||
current_status = session_info.get("status") if session_info else None
|
||||
|
||||
if session_info and current_status in valid_statuses:
|
||||
# NOTE: Path transformation for demo-user removed.
|
||||
# Frontend now receives the real demo_user_id from session creation
|
||||
# and uses it directly in API calls.
|
||||
|
||||
# Inject virtual tenant ID
|
||||
request.state.tenant_id = session_info["virtual_tenant_id"]
|
||||
request.state.is_demo_session = True
|
||||
request.state.demo_account_type = session_info["demo_account_type"]
|
||||
request.state.demo_session_status = current_status # Track status for monitoring
|
||||
# Use scope state directly to avoid potential state property issues
|
||||
request.scope.setdefault("state", {})
|
||||
state = request.scope["state"]
|
||||
state["tenant_id"] = session_info["virtual_tenant_id"]
|
||||
state["is_demo_session"] = True
|
||||
state["demo_account_type"] = session_info["demo_account_type"]
|
||||
state["demo_session_status"] = current_status # Track status for monitoring
|
||||
|
||||
# Inject demo user context for auth middleware
|
||||
# Map demo account type to the actual demo user IDs from fixture files
|
||||
# These IDs are the owner IDs from the respective 01-tenant.json files
|
||||
DEMO_USER_IDS = {
|
||||
"professional": "c1a2b3c4-d5e6-47a8-b9c0-d1e2f3a4b5c6", # María García López (professional/01-tenant.json -> owner.id)
|
||||
"enterprise": "d2e3f4a5-b6c7-48d9-e0f1-a2b3c4d5e6f7" # Director (enterprise/parent/01-tenant.json -> owner.id)
|
||||
}
|
||||
# Uses DEMO_USER_IDS constant defined at module level
|
||||
demo_user_id = DEMO_USER_IDS.get(
|
||||
session_info.get("demo_account_type", "professional"),
|
||||
DEMO_USER_IDS["professional"]
|
||||
@@ -207,7 +216,7 @@ class DemoMiddleware(BaseHTTPMiddleware):
|
||||
# NEW: Extract subscription tier from demo account type
|
||||
subscription_tier = "enterprise" if session_info.get("demo_account_type") == "enterprise" else "professional"
|
||||
|
||||
request.state.user = {
|
||||
state["user"] = {
|
||||
"user_id": demo_user_id, # Use actual demo user UUID
|
||||
"email": f"demo-{session_id}@demo.local",
|
||||
"tenant_id": session_info["virtual_tenant_id"],
|
||||
@@ -282,8 +291,10 @@ class DemoMiddleware(BaseHTTPMiddleware):
|
||||
# Check if this is a demo tenant (base template)
|
||||
elif tenant_id in DEMO_TENANT_IDS:
|
||||
# Direct access to demo tenant without session - block writes
|
||||
request.state.is_demo_session = True
|
||||
request.state.tenant_id = tenant_id
|
||||
request.scope.setdefault("state", {})
|
||||
state = request.scope["state"]
|
||||
state["is_demo_session"] = True
|
||||
state["tenant_id"] = tenant_id
|
||||
|
||||
if request.method not in ["GET", "HEAD", "OPTIONS"]:
|
||||
return JSONResponse(
|
||||
|
||||
Reference in New Issue
Block a user