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-coredepends onbelgie-proto, and in this monorepo both packages are resolved from the workspace.
What It Includes
Belgiefor wiring settings, adapters, sessions, and FastAPI routes.BelgieClientfor request-scoped auth operations against an injected database session.BelgieSettings,SessionSettings,CookieSettings, andURLSettings.SessionManagerfor 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_SECRETandBELGIE_BASE_URLare required byBelgieSettings().BELGIE_SESSION_*,BELGIE_COOKIE_*, andBELGIE_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
/dashboardand/.
API Surface
- Import from
belgie_corefor the main package entry point. - Import the shared connection protocol from
belgie_proto.core.connection. - Use
belgie.routerto mount auth routes in FastAPI. - Use
BelgieClientfor authenticated request handlers and scope checks.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file belgie_core-0.19.3.tar.gz.
File metadata
- Download URL: belgie_core-0.19.3.tar.gz
- Upload date:
- Size: 9.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d6a623813b39f616196ac17f6f6968217e43b64c920d9c71a1fa16af83245c7
|
|
| MD5 |
aa59c2612596424baba79d8e933fae58
|
|
| BLAKE2b-256 |
6f56c3c052cad0cc87de6553a20a662ade0e213e65b423693408ae234ef1eef5
|
File details
Details for the file belgie_core-0.19.3-py3-none-any.whl.
File metadata
- Download URL: belgie_core-0.19.3-py3-none-any.whl
- Upload date:
- Size: 14.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5065a012bde63f28b6ecb6f520247a39086aeefe6e68f94b5334fbab4d25ef84
|
|
| MD5 |
37ee63b3b71521fcedbfcaeb3806336b
|
|
| BLAKE2b-256 |
aa0535f36a7a93d5d0ebc63d43d03d99ff2171b06a77fcb73a848ca44fb07010
|