Skip to main content

Core authentication logic for Belgie

Project description

Belgie Core: Authentication Primitives for Belgie Apps

[!WARNING] Belgie is currently in beta. The core API may change before v1.0 as the broader package set stabilizes.

Belgie Core is the orchestration layer behind Belgie's authentication flow. It wires settings, sessions, request-scoped clients, and FastAPI integration around the shared protocol interfaces in belgie-proto.

Use it when you want the core auth primitives without the higher-level package extras. If you only need the shared interfaces, see belgie-proto.

Installation

uv add belgie-core

[!NOTE] belgie-core depends on belgie-proto, and in this monorepo both packages are resolved from the workspace.

What It Includes

  • Belgie for wiring settings, adapters, sessions, and FastAPI routes.
  • BelgieClient for request-scoped auth operations against an injected database session.
  • BelgieSettings, SessionSettings, CookieSettings, and URLSettings.
  • SessionManager for session lifecycle handling.
  • Session and state token helpers, plus scope validation utilities.
  • Belgie-specific exception types for auth and configuration failures.

Quick Start

Here is the smallest useful setup for embedding Belgie Core in a FastAPI app:

Project Structure:

my-app/
├── server.py
└── models.py

server.py:

from collections.abc import AsyncGenerator

from fastapi import Depends, FastAPI, Request
from fastapi.security import SecurityScopes

from belgie_core import Belgie, BelgieClient, BelgieSettings
from belgie_proto.core.connection import DBConnection

from models import adapter, session_maker

settings = BelgieSettings(
    secret="your-secret-key",
    base_url="http://localhost:8000",
)


async def get_db() -> AsyncGenerator[DBConnection, None]:
    async with session_maker() as session:
        yield session


belgie = Belgie(settings=settings, adapter=adapter, database=get_db)
app = FastAPI()
app.include_router(belgie.router)


@app.get("/me")
async def me(
    request: Request,
    client: BelgieClient = Depends(belgie),
):
    individual = await client.get_individual(SecurityScopes(), request)
    return {"email": individual.email}

Belgie Core also gives you Depends(belgie) for request-scoped client access and a router that mounts the auth endpoints for any plugins you register.

Configuration

  • BELGIE_SECRET and BELGIE_BASE_URL are required by BelgieSettings().
  • BELGIE_SESSION_*, BELGIE_COOKIE_*, and BELGIE_URLS_* control session lifetime, cookie behavior, and redirect URLs.
  • Session cookies default to secure, HTTP-only, and SameSite=Lax.
  • URL helpers default sign-in and sign-out redirects to /dashboard and /.

API Surface

  • Import from belgie_core for the main package entry point.
  • Import the shared connection protocol from belgie_proto.core.connection.
  • Use belgie.router to mount auth routes in FastAPI.
  • Use BelgieClient for authenticated request handlers and scope checks.

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

belgie_core-0.16.2.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

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

belgie_core-0.16.2-py3-none-any.whl (13.0 kB view details)

Uploaded Python 3

File details

Details for the file belgie_core-0.16.2.tar.gz.

File metadata

  • Download URL: belgie_core-0.16.2.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for belgie_core-0.16.2.tar.gz
Algorithm Hash digest
SHA256 4825db0d80ae110c0d1887a6c33320293e30e8db107b9e21ece18cc0d168f8d3
MD5 b58fdceef3d6887c20ab7499dd673f3d
BLAKE2b-256 5ed482ebf7b4fbe10b5b6403c1e1d99f3c16fbfaf72ea4e0a70cc1a0651e28dc

See more details on using hashes here.

File details

Details for the file belgie_core-0.16.2-py3-none-any.whl.

File metadata

  • Download URL: belgie_core-0.16.2-py3-none-any.whl
  • Upload date:
  • Size: 13.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for belgie_core-0.16.2-py3-none-any.whl
Algorithm Hash digest
SHA256 72348f3864c0fb596cefac1f8efbb04261a4801b72538259a8b1c4252c136521
MD5 e740f412bf173090f74f8ba0d6320ede
BLAKE2b-256 83e9358fefaafc3a5fa1830f3ef96df615ca81683c656ce5ed813446d57b7009

See more details on using hashes here.

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