User Resolver
📋 Planned
 Documentation Under Construction
This page will explain how to implement a UserResolver to integrate Vanna with your authentication system, providing complete examples for common patterns.
Planned Content
- ✓ UserResolver interface and contract
- ✓ RequestContext: cookies, headers, metadata
- ✓ User model: id, username, email, groups, metadata
- ✓ Complete example implementations
- ✓ Testing your UserResolver
- ✓ Error handling (anonymous users, invalid tokens)
- ✓ Best practices and security considerations
Want to contribute or suggest improvements? Open an issue on GitHub
The UserResolver Pattern
When complete, this will show:
from vanna.core.user import UserResolver, User, RequestContext
class MyUserResolver(UserResolver):
    async def resolve_user(self, request_context: RequestContext) -> User:
        """
        Extract user identity from the request and return a User object.
        Args:
            request_context: Contains cookies, headers, remote_addr, metadata
        Returns:
            User object with id, groups, and metadata
        """
        # Your implementation here
        passKey Concepts
- RequestContext: Provides access to request data (cookies, headers, etc.)
- User: The identity object Vanna uses for permissions
- Groups: Array of group names for group-based access control
- Metadata: Additional data (department, workspace_id, etc.)
Examples Preview
This page will include 4 complete examples:
- Cookie-based authentication (simple)
- JWT from Authorization header (common)
- NextAuth.js session (React/Next.js apps)
- OAuth/SSO integration (enterprise)