Allows Paskia to authenticate the user to a client site. - User friendly client registration flow on the admin app - Redirect-based authentication flow (per spec) - Backchannel logout both ways to keep sessions synchronized - Groups integrated with Paskia's permission system - Adds email, preferred username and telephone fields on user profile - All new user basic info layout to show the new information, better looks - API and DB structures redesigned - Various unrelated fixes to theming and layout
96 lines
2.0 KiB
TOML
96 lines
2.0 KiB
TOML
[build-system]
|
|
requires = ["hatchling", "hatch-vcs"]
|
|
build-backend = "hatchling.build"
|
|
|
|
[project]
|
|
name = "paskia"
|
|
dynamic = ["version"]
|
|
description = "Passkey Auth made easy: all sites and APIs can be guarded even without any changes on the protected site."
|
|
readme = "README.md"
|
|
keywords = [ "forward_auth", "auth_request", "FastAPI" ]
|
|
authors = [
|
|
{name = "Leo Vasanko"},
|
|
]
|
|
dependencies = [
|
|
"fastapi[standard]>=0.104.1",
|
|
"websockets>=12.0",
|
|
"webauthn>=1.11.1",
|
|
"base64url>=1.0.0",
|
|
"uuid7-standard>=1.0.0",
|
|
"pyjwt[crypto]>=2.8.0",
|
|
"jsondiff>=2.2.1",
|
|
"msgspec>=0.20.0",
|
|
"aiofiles>=25.1.0",
|
|
"fastapi-vue>=0.3.0",
|
|
"ua-parser[regex]>=1.0.1",
|
|
]
|
|
requires-python = ">=3.11"
|
|
|
|
[project.urls]
|
|
Homepage = "https://git.zi.fi/LeoVasanko/paskia"
|
|
Repository = "https://github.com/LeoVasanko/paskia"
|
|
|
|
[tool.hatch.version]
|
|
source = "vcs"
|
|
|
|
[tool.hatch.build.hooks.vcs]
|
|
version-file = "paskia/_version.py"
|
|
|
|
[project.optional-dependencies]
|
|
dev = [
|
|
"ruff>=0.1.0",
|
|
"coverage[toml]>=7.0.0",
|
|
"pytest>=8.0.0",
|
|
"pytest-asyncio>=0.24.0",
|
|
"httpx>=0.27.0",
|
|
]
|
|
|
|
[tool.coverage.run]
|
|
source = ["paskia"]
|
|
branch = true
|
|
parallel = true
|
|
sigterm = true
|
|
|
|
[tool.coverage.report]
|
|
exclude_lines = [
|
|
"pragma: no cover",
|
|
"if TYPE_CHECKING:",
|
|
"if __name__ == .__main__.:",
|
|
]
|
|
show_missing = true
|
|
|
|
[tool.coverage.html]
|
|
directory = "coverage-html"
|
|
|
|
[tool.pytest.ini_options]
|
|
asyncio_mode = "auto"
|
|
asyncio_default_fixture_loop_scope = "function"
|
|
testpaths = ["tests"]
|
|
filterwarnings = [
|
|
"ignore::DeprecationWarning",
|
|
]
|
|
|
|
[tool.ruff.lint]
|
|
select = ["E", "F", "I", "N", "W", "UP", "PLC0415"]
|
|
ignore = ["E501"] # Line too long
|
|
isort.known-first-party = ["paskia"]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"coverage>=7.12.0",
|
|
"httpx>=0.28.1",
|
|
"pytest>=9.0.1",
|
|
"pytest-asyncio>=1.3.0",
|
|
"pytest-cov>=7.0.0",
|
|
"ruff>=0.14.8",
|
|
]
|
|
|
|
[project.scripts]
|
|
paskia = "paskia.__main__:main"
|
|
|
|
[tool.hatch.build]
|
|
artifacts = ["paskia/frontend-build"]
|
|
targets.sdist.hooks.custom.path = "scripts/build-frontend.py"
|
|
packages = ["paskia"]
|
|
only-packages = true
|