Skip to main content

Authentication, sessions, admin dashboard, and per-user stores for the enlace platform

Project description

enlace_auth

Authentication, sessions, an admin dashboard, and per-user stores for the enlace multi-app platform.

enlace itself is auth-agnostic — it composes apps and routes traffic. This package plugs in at compose time and adds:

  • /auth/login, /auth/logout, /auth/register, /auth/whoami, /auth/csrf, /auth/me/password, /auth/shared-login
  • /_admin/api/* — list/create/delete users, admin password reset, view app policy. Gated by an admin allowlist.
  • per-user data injection via request.state.store
  • PlatformAuthMiddleware + CSRFMiddleware
  • optional OAuth2 / OIDC via Authlib

Quick start

from enlace import build_backend, PlatformConfig
from enlace_auth import plugin as auth_plugin

config = PlatformConfig.from_toml("platform.toml")
app = build_backend(config, plugins=[auth_plugin])

Or, if you serve via uvicorn --factory enlace.compose:create_app, set:

export ENLACE_PLUGINS=enlace_auth:plugin

Configuration

In platform.toml:

[auth]
enabled = true
session_cookie_name = "enlace_session"
session_max_age_seconds = 86400
signing_key_env = "ENLACE_SIGNING_KEY"
secure_cookies = true

[auth.stores]
backend = "file"
path = "~/.enlace/platform_store"

[stores.user_data]
backend = "file"
path = "~/.enlace/user_data"

Plus environment variables:

  • ENLACE_SIGNING_KEY — signing key (32+ chars). Generate with python -c "import secrets; print(secrets.token_urlsafe(32))".
  • ENLACE_ADMIN_EMAILS — comma-separated admin emails (gate /_admin).
  • ENLACE_ALLOW_UNSIGNED=1 — opt-out from fail-fast (diagnostics only).

Doctor checks

from enlace.doctor import run_doctor
from enlace_auth.diagnostics import static_checks, http_checks

report = run_doctor(
    config,
    base_url="http://localhost:8000",
    extra_static_checks=static_checks,
    extra_http_checks=http_checks,
)

Status

Extracted from enlace 0.0.11. The Python API is stable; an admin frontend ships separately as a normal enlaced app.

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

enlace_auth-0.1.6.tar.gz (54.5 kB view details)

Uploaded Source

Built Distribution

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

enlace_auth-0.1.6-py3-none-any.whl (47.8 kB view details)

Uploaded Python 3

File details

Details for the file enlace_auth-0.1.6.tar.gz.

File metadata

  • Download URL: enlace_auth-0.1.6.tar.gz
  • Upload date:
  • Size: 54.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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 enlace_auth-0.1.6.tar.gz
Algorithm Hash digest
SHA256 a58c1e8ebd1795caae46eac9ebdbbc3bd2fbf465ca0b49fc465eed597b787729
MD5 68c805a63dd010ee56a691f83b4cdfaa
BLAKE2b-256 78e020148fa58afbb8e46690f86872c15517a8e8bd6a0e9861a27f0f8662ae93

See more details on using hashes here.

File details

Details for the file enlace_auth-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: enlace_auth-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 47.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","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 enlace_auth-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 8e55c5c93eb7a8c8e96069e6571656496652ec861ee482a0bf8b1136fc4a4080
MD5 7bfba633077a9d7f8af4e02ec31057c4
BLAKE2b-256 d1957cfcd67fdae021fc69983f9b5243cbf57f5e6005891a5dab983f1a538137

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