Skip to main content

Integration layer for Vexen systems (user, rbac, auth)

Project description

vexen-core

Integration layer for the Vexen system suite (user, rbac, auth).

Overview

vexen-core provides a unified container that integrates three independent Vexen systems:

  • vexen-user: User management with hexagonal architecture
  • vexen-rbac: Role-Based Access Control system
  • vexen-auth: Authentication with JWT tokens

Installation

pip install vexen-core

This will automatically install all three systems as dependencies.

Quick Start

import asyncio
from vexen_core import VexenConfig, VexenContainer

async def main():
    # Create configuration
    config = VexenConfig(
        database_url="postgresql+asyncpg://user:pass@localhost/db",
        secret_key="your-secret-key-change-in-production",
        algorithm="HS256",
        echo=False
    )

    # Use context manager (recommended)
    async with VexenContainer(config) as vexen:
        # Access all three systems
        user_system = vexen.user
        rbac_system = vexen.rbac
        auth_system = vexen.auth

        # Use the services
        # users = await vexen.user.service.list()
        # roles = await vexen.rbac.roles.list()
        # auth_response = await vexen.auth.service.login(request)

if __name__ == "__main__":
    asyncio.run(main())

Configuration

The VexenConfig dataclass accepts the following parameters:

@dataclass
class VexenConfig:
    # Database configuration
    database_url: str
    echo: bool = False
    pool_size: int = 5
    max_overflow: int = 10

    # Authentication configuration
    secret_key: str
    algorithm: str = "HS256"
    access_token_expires_minutes: int = 15
    refresh_token_expires_days: int = 30

Usage

User Management

from vexen_user.application.dto import CreateUserRequest

async with VexenContainer(config) as vexen:
    # Create a user
    request = CreateUserRequest(
        email="john@example.com",
        name="John Doe"
    )
    response = await vexen.user.service.create(request)

    if response.success:
        print(f"User created: {response.data.id}")

RBAC

from vexen_rbac.application.dto import CreateRoleRequest

async with VexenContainer(config) as vexen:
    # Create a role
    request = CreateRoleRequest(
        name="admin",
        description="Administrator role"
    )
    response = await vexen.rbac.roles.create(request)

    if response.success:
        print(f"Role created: {response.data.id}")

Authentication

from vexen_auth.application.dto import LoginRequest

async with VexenContainer(config) as vexen:
    # Login
    request = LoginRequest(
        email="john@example.com",
        password="SecurePassword123"
    )
    response = await vexen.auth.service.login(request)

    if response:
        print(f"Access token: {response.access_token}")
        print(f"User ID: {response.user_id}")

Architecture

System Integration

The VexenContainer initializes all three systems with shared configuration:

  1. User System - Initialized first, provides user repository
  2. RBAC System - Initialized second, manages roles and permissions
  3. Auth System - Initialized last, configured to use the user repository

Dependency Injection

The auth system is automatically configured to work with the user repository:

# Automatic integration
async with VexenContainer(config) as vexen:
    # Auth system can access user information
    # without tight coupling to user service
    pass

Manual Lifecycle

If you need more control over initialization:

vexen = VexenContainer(config)
await vexen.init()

try:
    # Use systems
    pass
finally:
    await vexen.close()

API Reference

VexenContainer

Properties

  • user: VexenUser - Access to user management system
  • rbac: RBAC - Access to RBAC system
  • auth: VexenAuth - Access to authentication system

Methods

  • async init() - Initialize all systems
  • async close() - Close all systems and cleanup resources
  • async __aenter__() - Context manager entry
  • async __aexit__() - Context manager exit

Examples

See the examples directory for complete examples:

  • basic_usage.py - Basic integration example
  • More examples coming soon...

Development

Running Tests

pytest

Code Quality

# Format code
ruff format .

# Lint code
ruff check . --fix

License

MIT

Links

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vexen_core-0.1.2.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vexen_core-0.1.2-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

Details for the file vexen_core-0.1.2.tar.gz.

File metadata

  • Download URL: vexen_core-0.1.2.tar.gz
  • Upload date:
  • Size: 37.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vexen_core-0.1.2.tar.gz
Algorithm Hash digest
SHA256 c0e7024c28a9cc2c567093b486fa01a71638e7f813e0d669132e01b399c470bd
MD5 aac78caeabe84a18871df6eafb376369
BLAKE2b-256 fdd309ecadc4426167c0680804a1b85c3645b82ad9c17652cc2c30b171bd26d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for vexen_core-0.1.2.tar.gz:

Publisher: python-publish.yml on vexen-labs/vexen-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vexen_core-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: vexen_core-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 5.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for vexen_core-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d6da32545326e6778e24208302c4e27fc6322613727cfbbd7c0a4e76d46b2519
MD5 85ead5d4ea54b3dee55f582e0b2e99b9
BLAKE2b-256 a979a09838c7ddc3c06ec2af0bad49dce232ed8ca4b32250f1dd36131971fdbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for vexen_core-0.1.2-py3-none-any.whl:

Publisher: python-publish.yml on vexen-labs/vexen-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page