From 4b16037426ac5c056dcbc9465ceb27b531eebb84 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Fri, 5 Dec 2025 13:17:52 +0000 Subject: [PATCH] Project renamed to Paskia. --- .gitignore | 7 ++-- API.md | 4 +-- README.md | 25 +++++++------- e2e/README.md | 6 ++-- e2e/package.json | 4 +-- e2e/playwright.config.ts | 4 +-- e2e/tests/global-setup.ts | 2 +- e2e/tests/passkey.spec.ts | 2 +- examples/index.html | 4 +-- frontend/vite.config.js | 4 +-- paskia/__init__.py | 3 ++ {passkey => paskia}/aaguid/__init__.py | 2 +- .../aaguid/combined_aaguid.json | 0 {passkey => paskia}/authsession.py | 10 +++--- {passkey => paskia}/bootstrap.py | 6 ++-- {passkey => paskia}/config.py | 0 {passkey => paskia}/db/__init__.py | 0 {passkey => paskia}/db/sql.py | 8 ++--- paskia/fastapi/__init__.py | 3 ++ {passkey => paskia}/fastapi/__main__.py | 34 +++++++++---------- {passkey => paskia}/fastapi/admin.py | 12 +++---- {passkey => paskia}/fastapi/api.py | 16 ++++----- {passkey => paskia}/fastapi/auth_host.py | 2 +- {passkey => paskia}/fastapi/authz.py | 2 +- {passkey => paskia}/fastapi/mainapp.py | 21 ++++++------ {passkey => paskia}/fastapi/reset.py | 10 +++--- {passkey => paskia}/fastapi/session.py | 2 +- {passkey => paskia}/fastapi/user.py | 12 +++---- {passkey => paskia}/fastapi/ws.py | 12 +++---- paskia/frontend-build/auth/admin/index.html | 18 ++++++++++ .../auth/assets/AccessDenied-TAST_piX.css | 1 + .../auth/assets/AccessDenied-guOGfNm-.js | 8 +++++ .../auth/assets/RestrictedAuth-BIGLs28V.js | 1 + .../auth/assets/RestrictedAuth-CMHKrNJh.css | 1 + .../_plugin-vue_export-helper-Bx2cFCEC.css | 1 + .../_plugin-vue_export-helper-R4vr2A9I.js | 2 ++ .../auth/assets/admin-D8zxJOk4.js | 1 + .../auth/assets/admin-DIOoLLHy.css | 1 + .../auth/assets/auth-CBojJKUK.css | 1 + .../auth/assets/auth-a0yJ_sei.js | 1 + .../auth/assets/forward-BHNzlQhM.js | 1 + .../auth/assets/helpers-CU0-cyzg.js | 1 + .../auth/assets/reset-DXzuKgh6.css | 1 + .../auth/assets/reset-YnZxhnI5.js | 1 + .../auth/assets/restricted-DVCvYFGN.js | 1 + paskia/frontend-build/auth/index.html | 18 ++++++++++ .../frontend-build/auth/restricted/index.html | 9 +++++ paskia/frontend-build/int/forward/index.html | 17 ++++++++++ paskia/frontend-build/int/reset/index.html | 15 ++++++++ {passkey => paskia}/globals.py | 4 +-- {passkey => paskia}/sansio.py | 2 +- {passkey => paskia}/util/frontend.py | 4 +-- {passkey => paskia}/util/hostutil.py | 4 +-- {passkey => paskia}/util/htmlutil.py | 0 {passkey => paskia}/util/passphrase.py | 2 +- {passkey => paskia}/util/permutil.py | 6 ++-- {passkey => paskia}/util/querysafe.py | 0 {passkey => paskia}/util/sessionutil.py | 4 +-- {passkey => paskia}/util/timeutil.py | 0 {passkey => paskia}/util/tokens.py | 2 +- {passkey => paskia}/util/useragent.py | 0 {passkey => paskia}/util/userinfo.py | 10 +++--- {passkey => paskia}/util/wordlist.py | 0 passkey/__init__.py | 3 -- passkey/fastapi/__init__.py | 3 -- pyproject.toml | 10 +++--- 66 files changed, 232 insertions(+), 139 deletions(-) create mode 100644 paskia/__init__.py rename {passkey => paskia}/aaguid/__init__.py (93%) rename {passkey => paskia}/aaguid/combined_aaguid.json (100%) rename {passkey => paskia}/authsession.py (94%) rename {passkey => paskia}/bootstrap.py (97%) rename {passkey => paskia}/config.py (100%) rename {passkey => paskia}/db/__init__.py (100%) rename {passkey => paskia}/db/sql.py (99%) create mode 100644 paskia/fastapi/__init__.py rename {passkey => paskia}/fastapi/__main__.py (89%) rename {passkey => paskia}/fastapi/admin.py (99%) rename {passkey => paskia}/fastapi/api.py (96%) rename {passkey => paskia}/fastapi/auth_host.py (98%) rename {passkey => paskia}/fastapi/authz.py (98%) rename {passkey => paskia}/fastapi/mainapp.py (85%) rename {passkey => paskia}/fastapi/reset.py (94%) rename {passkey => paskia}/fastapi/session.py (97%) rename {passkey => paskia}/fastapi/user.py (94%) rename {passkey => paskia}/fastapi/ws.py (95%) create mode 100644 paskia/frontend-build/auth/admin/index.html create mode 100644 paskia/frontend-build/auth/assets/AccessDenied-TAST_piX.css create mode 100644 paskia/frontend-build/auth/assets/AccessDenied-guOGfNm-.js create mode 100644 paskia/frontend-build/auth/assets/RestrictedAuth-BIGLs28V.js create mode 100644 paskia/frontend-build/auth/assets/RestrictedAuth-CMHKrNJh.css create mode 100644 paskia/frontend-build/auth/assets/_plugin-vue_export-helper-Bx2cFCEC.css create mode 100644 paskia/frontend-build/auth/assets/_plugin-vue_export-helper-R4vr2A9I.js create mode 100644 paskia/frontend-build/auth/assets/admin-D8zxJOk4.js create mode 100644 paskia/frontend-build/auth/assets/admin-DIOoLLHy.css create mode 100644 paskia/frontend-build/auth/assets/auth-CBojJKUK.css create mode 100644 paskia/frontend-build/auth/assets/auth-a0yJ_sei.js create mode 100644 paskia/frontend-build/auth/assets/forward-BHNzlQhM.js create mode 100644 paskia/frontend-build/auth/assets/helpers-CU0-cyzg.js create mode 100644 paskia/frontend-build/auth/assets/reset-DXzuKgh6.css create mode 100644 paskia/frontend-build/auth/assets/reset-YnZxhnI5.js create mode 100644 paskia/frontend-build/auth/assets/restricted-DVCvYFGN.js create mode 100644 paskia/frontend-build/auth/index.html create mode 100644 paskia/frontend-build/auth/restricted/index.html create mode 100644 paskia/frontend-build/int/forward/index.html create mode 100644 paskia/frontend-build/int/reset/index.html rename {passkey => paskia}/globals.py (95%) rename {passkey => paskia}/sansio.py (99%) rename {passkey => paskia}/util/frontend.py (95%) rename {passkey => paskia}/util/hostutil.py (96%) rename {passkey => paskia}/util/htmlutil.py (100%) rename {passkey => paskia}/util/passphrase.py (92%) rename {passkey => paskia}/util/permutil.py (88%) rename {passkey => paskia}/util/querysafe.py (100%) rename {passkey => paskia}/util/sessionutil.py (92%) rename {passkey => paskia}/util/timeutil.py (100%) rename {passkey => paskia}/util/tokens.py (96%) rename {passkey => paskia}/util/useragent.py (100%) rename {passkey => paskia}/util/userinfo.py (96%) rename {passkey => paskia}/util/wordlist.py (100%) delete mode 100644 passkey/__init__.py delete mode 100644 passkey/fastapi/__init__.py diff --git a/.gitignore b/.gitignore index ad70a98..25aac02 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ dist/ .* !.gitignore *.lock -passkey-auth.sqlite -/passkey/frontend-build -/test_*.py -passkey/_version.py +paskia.sqlite +/paskia/frontend-build +/paskia/_version.py diff --git a/API.md b/API.md index bec5b2c..46191bf 100644 --- a/API.md +++ b/API.md @@ -1,6 +1,6 @@ -# PassKey Auth API Documentation +# Paskia API Documentation -This document lists the HTTP and WebSocket endpoints exposed by the PassKey Auth +This document lists the HTTP and WebSocket endpoints exposed by the Paskia service and how they behave depending on whether a dedicated authentication host (`--auth-host` / environment `PASSKEY_AUTH_HOST`) is configured. diff --git a/README.md b/README.md index 212f469..4f7f00c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# PasskeyAuth +# Paskia A minimal FastAPI WebAuthn server with WebSocket support for passkey registration. This project demonstrates WebAuthn registration flow with Resident Keys (discoverable credentials) using modern Python tooling. @@ -31,24 +31,23 @@ uv pip install -e .[dev] ### Run (new CLI) -`passkey-auth` now provides subcommands: +`paskia` now provides subcommands: ```text -passkey-auth serve [host:port] [--options] -passkey-auth dev [--options] +paskia serve [host:port] [--options] ``` Examples (fish shell shown): ```fish # Production style (no reload) -passkey-auth serve -passkey-auth serve 0.0.0.0:8080 --rp-id example.com --origin https://example.com +paskia serve +paskia serve 0.0.0.0:8080 --rp-id example.com --origin https://example.com -# Development (auto-reload) -passkey-auth dev # localhost:4401 -passkey-auth dev :5500 # localhost on port 5500 -passkey-auth dev 127.0.0.1 # host only, default port 4401 +# Development (auto-reload via scripts/dev.py) +python scripts/dev.py # localhost:4401 +python scripts/dev.py :5500 # localhost on port 5500 +python scripts/dev.py 127.0.0.1 # host only, default port 4401 ``` Available options (both subcommands): @@ -61,7 +60,7 @@ Available options (both subcommands): ### Legacy Invocation -If you previously used `python -m passkey.fastapi --dev --host ...`, switch to the new form above. The old flags `--host`, `--port`, and `--dev` are replaced by the `[host:port]` positional and the `dev` subcommand. +If you previously used `python -m paskia.fastapi --dev --host ...`, switch to the new form above. The old flags `--host`, `--port`, and `--dev` are replaced by using `scripts/dev.py` for development mode. ## Usage (Web) @@ -90,8 +89,8 @@ hatch run ruff format . ### Project Structure ``` -passkeyauth/ -├── passkeyauth/ +paskia/ +├── paskia/ │ ├── __init__.py │ └── main.py # FastAPI server with WebSocket support ├── static/ diff --git a/e2e/README.md b/e2e/README.md index eb74fae..202ef79 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -1,6 +1,6 @@ -# PasskeyAuth E2E Tests +# Paskia E2E Tests -End-to-end tests for PasskeyAuth using [Playwright](https://playwright.dev/) with Chrome's **Virtual Authenticator**. +End-to-end tests for Paskia using [Playwright](https://playwright.dev/) with Chrome's **Virtual Authenticator**. ## Overview @@ -33,7 +33,7 @@ npm test ``` This will: -1. Start a fresh PasskeyAuth server with a test database +1. Start a fresh Paskia server with a test database 2. Run all E2E tests against it 3. Clean up the server when done diff --git a/e2e/package.json b/e2e/package.json index 0b8ea5b..6f2f38f 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -1,8 +1,8 @@ { - "name": "passkey-auth-e2e", + "name": "paskia-e2e", "version": "1.0.0", "private": true, - "description": "E2E tests for PasskeyAuth using Playwright with Virtual Authenticator", + "description": "E2E tests for Paskia using Playwright with Virtual Authenticator", "type": "module", "scripts": { "test": "bunx playwright test", diff --git a/e2e/playwright.config.ts b/e2e/playwright.config.ts index f38b28c..11f5540 100644 --- a/e2e/playwright.config.ts +++ b/e2e/playwright.config.ts @@ -1,7 +1,7 @@ import { defineConfig, devices } from '@playwright/test' /** - * Playwright configuration for PasskeyAuth E2E tests. + * Playwright configuration for Paskia E2E tests. * Uses Chrome's Virtual Authenticator for automated passkey testing. * * Run with: bun run test @@ -23,7 +23,7 @@ export default defineConfig({ globalTeardown: './tests/global-teardown.ts', use: { - // Base URL for the passkey-auth server + // Base URL for the Paskia server baseURL: process.env.BASE_URL || 'http://localhost:4401', // Collect trace on failure for debugging diff --git a/e2e/tests/global-setup.ts b/e2e/tests/global-setup.ts index f02b73f..0455e41 100644 --- a/e2e/tests/global-setup.ts +++ b/e2e/tests/global-setup.ts @@ -45,7 +45,7 @@ export default async function globalSetup() { // Start the server using Node's spawn const serverProcess = spawn('uv', [ - 'run', 'passkey-auth', 'serve', ':4401', + 'run', 'paskia', 'serve', ':4401', '--rp-id', 'localhost', '--origin', 'http://localhost:4401' ], { diff --git a/e2e/tests/passkey.spec.ts b/e2e/tests/passkey.spec.ts index 2f90058..518cdd1 100644 --- a/e2e/tests/passkey.spec.ts +++ b/e2e/tests/passkey.spec.ts @@ -10,7 +10,7 @@ import { } from './fixtures/passkey-helpers' /** - * E2E tests for PasskeyAuth using Chrome's Virtual Authenticator. + * E2E tests for Paskia using Chrome's Virtual Authenticator. * * These tests exercise the complete WebAuthn flow: * 1. Registration via WebSocket using bootstrap reset token diff --git a/examples/index.html b/examples/index.html index cfe8b65..42862eb 100644 --- a/examples/index.html +++ b/examples/index.html @@ -3,7 +3,7 @@ - PassKey Auth - Dev Mode + Paskia - Dev Mode