Files
service-finder/backend/app/scripts/debug_scope_issue.py
2026-03-30 06:32:22 +00:00

61 lines
2.6 KiB
Python

#!/usr/bin/env python3
"""
Debug the scope_id issue.
"""
import asyncio
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.db.session import AsyncSessionLocal
from app.models.identity.identity import User
from app.core.security import decode_token
# Token from verification test (hardcoded for now, we'll get it dynamically)
TEST_TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIyOCIsInJvbGUiOiJhZG1pbiIsInJhbmsiOjEsInNjb3BlX2xldmVsIjoib3JnYW5pemF0aW9uIiwic2NvcGVfaWQiOiIyOCIsImV4cCI6MTc3NDg2MjQwMCwiaWF0IjoxNzQzMzI2NDAwLCJ0eXBlIjoiYWNjZXNzIn0.4Q9n2vQ8q3V7X6Y5Z8A9B0C1D2E3F4G5H6I7J8K9L0"
async def debug():
async with AsyncSessionLocal() as db:
# Decode token
payload = decode_token(TEST_TOKEN)
print(f"✅ Token payload:")
print(f" - sub: {payload.get('sub')}")
print(f" - scope_id: {payload.get('scope_id')}")
print(f" - scope_level: {payload.get('scope_level')}")
print(f" - role: {payload.get('role')}")
# Get user from database
user_id = payload.get('sub')
if user_id:
user_stmt = select(User).where(User.id == int(user_id))
user_result = await db.execute(user_stmt)
user = user_result.scalar_one_or_none()
if user:
print(f"\n✅ User from database (ID: {user.id}):")
print(f" - scope_id: {user.scope_id}")
print(f" - scope_level: {user.scope_level}")
print(f" - person_id: {user.person_id}")
# Check what the assets endpoint would see
print(f"\n🔍 Assets endpoint logic:")
print(f" - current_user.scope_id: {user.scope_id}")
print(f" - Type: {type(user.scope_id)}")
print(f" - Is None? {user.scope_id is None}")
print(f" - == 'None'? {user.scope_id == 'None'}")
print(f" - == ''? {user.scope_id == ''}")
if user.scope_id is None:
print(" → Would go to PERSONAL mode")
else:
print(" → Would go to CORPORATE mode")
try:
scope_org_id = int(user.scope_id)
print(f" → scope_org_id: {scope_org_id}")
except (ValueError, TypeError):
print(f" → scope_org_id: None (invalid)")
if __name__ == "__main__":
asyncio.run(debug())