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
        pass

Key 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:

  1. Cookie-based authentication (simple)
  2. JWT from Authorization header (common)
  3. NextAuth.js session (React/Next.js apps)
  4. OAuth/SSO integration (enterprise)