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.0.tar.gz (7.9 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.0-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vexen_core-0.1.0.tar.gz
  • Upload date:
  • Size: 7.9 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.0.tar.gz
Algorithm Hash digest
SHA256 799b204592ee39ed55ca4caa07ae7d9bda7a17deb82f12fd6492dbbae8d2a1c3
MD5 4fc06a528fa1eb773016954926d82434
BLAKE2b-256 f55d0c21507283fe2541f4a100ff965eb4119948fc6dc9e27b857ffddff78d38

See more details on using hashes here.

Provenance

The following attestation bundles were made for vexen_core-0.1.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: vexen_core-0.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db44d52a1042a806e42c063897a0dd996b58b6df35da825734b16ebd391518c3
MD5 6099a62239d923f55777ba7c82f35132
BLAKE2b-256 7297dafbb71f90920f27d7eb9069ab584038d7a04192fd56657a7ca34bb8f512

See more details on using hashes here.

Provenance

The following attestation bundles were made for vexen_core-0.1.0-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