from fastapps import BaseWidget, auth_required, UserContext
@auth_required(scopes=["user"])
class UserProfileWidget(BaseWidget):
identifier = "user-profile"
title = "User Profile"
async def execute(self, input_data, context, user: UserContext):
# Check authentication status
if not user.is_authenticated:
return {"error": "Authentication required"}
# Access user information
user_id = user.subject
email = user.claims.get('email')
name = user.claims.get('name')
picture = user.claims.get('picture')
# Check permissions
is_premium = user.has_scope("premium")
is_admin = user.has_scope("admin")
# Fetch user data from your database
user_data = await fetch_user_data(user_id)
return {
"user_id": user_id,
"email": email,
"name": name,
"picture": picture,
"is_premium": is_premium,
"is_admin": is_admin,
"profile": user_data,
"scopes": user.scopes
}