5ab9406430
Co-authored-by: aider (openrouter/openai/o3-mini-high) <aider@aider.chat>
86 lines
2.4 KiB
Python
86 lines
2.4 KiB
Python
import asyncio
|
|
import logging
|
|
from typing import Dict, Any
|
|
|
|
from amqp.config.amq_configuration import AMQConfiguration
|
|
from amqp.rabbitmq.user_management_service_client import (
|
|
UserManagementServiceClient,
|
|
UserManagementServiceException
|
|
)
|
|
|
|
|
|
async def get_user_info_from_token(
|
|
client: UserManagementServiceClient, token: str
|
|
) -> Dict[str, Any]:
|
|
"""
|
|
Get user information from a JWT token.
|
|
|
|
Args:
|
|
client: User Management Service client
|
|
token: JWT token
|
|
|
|
Returns:
|
|
User information
|
|
|
|
Raises:
|
|
UserManagementServiceException: If an error occurs
|
|
"""
|
|
try:
|
|
# Validate the token
|
|
token_info = await client.validate_token(token)
|
|
|
|
# Extract user ID from token info
|
|
user_id = None
|
|
for item in token_info:
|
|
if isinstance(item, dict) and "sub" in item:
|
|
user_id = item["sub"]
|
|
break
|
|
|
|
if not user_id:
|
|
raise UserManagementServiceException(
|
|
"cleverthis.clevermicro.auth.invalid_token",
|
|
"Token does not contain user ID (sub claim)",
|
|
{}
|
|
)
|
|
|
|
# Query user information
|
|
user_info = await client.query_user_by_id(user_id)
|
|
return user_info
|
|
|
|
except UserManagementServiceException as e:
|
|
logging.error(f"User Management Service error: {e.exception_type}: {e.message}")
|
|
raise
|
|
except Exception as e:
|
|
logging.error(f"Unexpected error: {e}")
|
|
raise
|
|
|
|
|
|
async def main():
|
|
# Initialize configuration
|
|
config = AMQConfiguration()
|
|
|
|
# Create client
|
|
client = UserManagementServiceClient(config)
|
|
|
|
try:
|
|
# Sample JWT token (replace with actual token)
|
|
token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
|
|
|
|
# Get user information
|
|
user_info = await get_user_info_from_token(client, token)
|
|
print(f"User information: {user_info}")
|
|
|
|
except UserManagementServiceException as e:
|
|
print(f"Error: {e.exception_type}: {e.message}")
|
|
if e.additional_info:
|
|
print(f"Additional info: {e.additional_info}")
|
|
except Exception as e:
|
|
print(f"Unexpected error: {e}")
|
|
finally:
|
|
# Close client
|
|
await client.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|