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.1.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.1-py3-none-any.whl (5.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: vexen_core-0.1.1.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.1.tar.gz
Algorithm Hash digest
SHA256 7c6b26f1dcd237df5e1d696d51eaad6502263b38093cbdc55b698a31a62aafde
MD5 f9d14e28f618ca90482f474536f81af5
BLAKE2b-256 c5c26c5f6efb59986a4bc7292c0564d66d07caf4caacd4be85351e1bde926fa0

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: vexen_core-0.1.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2656d49ff7517f38a1efc7fc0b4e299af1d61d32621abde30452f8ed06150b0d
MD5 96b490959d4be6b7e5619355f3d40de1
BLAKE2b-256 c34968c6c9b74c2beb2894dbdf70339f6aa8a6967db087b1767010a65a8ad378

See more details on using hashes here.

Provenance

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