Fix Demo enterprise list
This commit is contained in:
@@ -309,18 +309,54 @@ class EnhancedTenantService:
|
||||
error=str(e))
|
||||
return None
|
||||
|
||||
async def get_user_tenants(self, owner_id: str) -> List[TenantResponse]:
|
||||
"""Get all tenants owned by a user"""
|
||||
async def get_user_tenants(self, user_id: str) -> List[TenantResponse]:
|
||||
"""Get all tenants accessible by a user (both owned and member tenants)"""
|
||||
|
||||
try:
|
||||
async with self.database_manager.get_session() as db_session:
|
||||
await self._init_repositories(db_session)
|
||||
tenants = await self.tenant_repo.get_tenants_by_owner(owner_id)
|
||||
return [TenantResponse.from_orm(tenant) for tenant in tenants]
|
||||
|
||||
# Get tenants where user is the owner
|
||||
owned_tenants = await self.tenant_repo.get_tenants_by_owner(user_id)
|
||||
|
||||
# Get tenants where user is a member (but not owner)
|
||||
memberships = await self.member_repo.get_user_memberships(user_id, active_only=True)
|
||||
|
||||
# Get tenant details for each membership
|
||||
member_tenant_ids = [str(membership.tenant_id) for membership in memberships]
|
||||
member_tenants = []
|
||||
|
||||
if member_tenant_ids:
|
||||
# Get tenant details for each membership
|
||||
for tenant_id in member_tenant_ids:
|
||||
tenant = await self.tenant_repo.get_by_id(tenant_id)
|
||||
if tenant:
|
||||
member_tenants.append(tenant)
|
||||
|
||||
# Combine and deduplicate (in case user is both owner and member)
|
||||
all_tenants = owned_tenants + member_tenants
|
||||
|
||||
# Remove duplicates by tenant ID
|
||||
unique_tenants = []
|
||||
seen_ids = set()
|
||||
for tenant in all_tenants:
|
||||
if str(tenant.id) not in seen_ids:
|
||||
seen_ids.add(str(tenant.id))
|
||||
unique_tenants.append(tenant)
|
||||
|
||||
logger.info(
|
||||
"Retrieved user tenants",
|
||||
user_id=user_id,
|
||||
owned_count=len(owned_tenants),
|
||||
member_count=len(member_tenants),
|
||||
total_count=len(unique_tenants)
|
||||
)
|
||||
|
||||
return [TenantResponse.from_orm(tenant) for tenant in unique_tenants]
|
||||
|
||||
except Exception as e:
|
||||
logger.error("Error getting user tenants",
|
||||
owner_id=owner_id,
|
||||
user_id=user_id,
|
||||
error=str(e))
|
||||
return []
|
||||
|
||||
|
||||
Reference in New Issue
Block a user