Commit graph

83 commits

Author SHA1 Message Date
Johan Lundberg
6a9e32f74d
feat: add admin invite creation endpoint 2026-02-19 13:36:11 +01:00
Johan Lundberg
1a795914f9
feat: add admin user list page with search and pagination 2026-02-19 11:35:25 +01:00
Johan Lundberg
f2d669d705
feat: add admin base template and CSS styles 2026-02-19 11:30:35 +01:00
Johan Lundberg
dd1f85d8d3
feat: add admin router with admin group guard 2026-02-19 11:18:50 +01:00
Johan Lundberg
7e9eeb1339
feat: add search_users and count_users to user repository 2026-02-19 11:00:47 +01:00
Johan Lundberg
b22dabbbb0
Merge branch 'feature/profile-page' 2026-02-18 14:38:53 +01:00
Johan Lundberg
8a610a0cd6
feat: add self-service profile page with manage navigation
Add /manage/profile page where authenticated users can view and edit
their OIDC profile fields (given_name, family_name, preferred_username,
email, phone_number, picture, locale).

- Create manage/base.html with tab-style nav for Profile/Credentials
- Update credentials.html to extend manage/base.html
- Add GET/POST routes with server-side validation
- Add input styling for tel and url input types
- Add profile test user with pre-filled data in setup_db.py
- Add 19 E2E tests covering structure, navigation, updates, validation
- All 76 E2E tests and 172 Python tests pass
2026-02-18 14:35:17 +01:00
Johan Lundberg
16f3e039d9
docs: add consent screen design 2026-02-18 13:50:56 +01:00
Johan Lundberg
404fcac4dd
Merge branch 'feature/config-file' 2026-02-18 13:09:58 +01:00
Johan Lundberg
64f8c1936b
refactor: fix lint warnings and remove stale type: ignore comments 2026-02-18 13:08:03 +01:00
Johan Lundberg
8c91edf137
docs: add example config file and update README 2026-02-18 12:54:43 +01:00
Johan Lundberg
eeb09321e2
feat: register OIDC clients from config file 2026-02-18 12:48:23 +01:00
Johan Lundberg
fa614e9321
Merge branch 'feature/playwright-webauthn-e2e' 2026-02-18 12:48:03 +01:00
Johan Lundberg
70c97233c5
fix(e2e): fix WebAuthn and integration test failures
- Use localhost instead of 127.0.0.1 as TARGET_URL so the WebAuthn RP ID
  is a valid domain (the spec forbids IP addresses)
- Replace request.post('/logout') with page.context().clearCookies() since
  Playwright's request fixture has a separate cookie jar from the page
- Add registerPasskey() helper that waits for 'load' event to reliably
  detect the page reload after successful registration
- Track credential count with getCredentialCount() since credentials
  accumulate across serial tests sharing the same database
- Fix login.spec.js selector from #webauthn-login-form to #webauthn-login-btn
  to match the actual template

All 57 E2E tests now pass (50 migrated + 7 WebAuthn).
2026-02-18 12:45:03 +01:00
Johan Lundberg
61ca3063ca
feat: add TOML config file support with client registrations 2026-02-18 12:44:00 +01:00
Johan Lundberg
94f777fc8f
docs: add config file implementation plan 2026-02-18 12:12:49 +01:00
Johan Lundberg
edeb036086
docs: add TOML config file design 2026-02-18 12:09:43 +01:00
Johan Lundberg
71ddf5d8ff
feat(e2e): add WebAuthn E2E tests with CDP virtual authenticator 2026-02-18 11:52:47 +01:00
Johan Lundberg
c96ebe1b64
feat(e2e): add WebAuthn test user to fixture seeding 2026-02-18 11:47:11 +01:00
Johan Lundberg
c726ae18d3
chore: remove completed implementation plan docs 2026-02-18 11:46:37 +01:00
Johan Lundberg
dee1b1e3bc
docs: update README with CLI commands and fix stale module name 2026-02-18 11:43:56 +01:00
Johan Lundberg
ef8bf10555
refactor(e2e): remove old custom test runner 2026-02-18 11:43:17 +01:00
Johan Lundberg
7900f264ba
refactor(e2e): migrate all tests to Playwright Test 2026-02-18 11:37:23 +01:00
Johan Lundberg
80960d5a1f
Merge branch 'feature/cli-module' 2026-02-18 11:35:15 +01:00
Johan Lundberg
e43720cd62
refactor: fix lint and type check issues in CLI module 2026-02-18 11:34:00 +01:00
Johan Lundberg
4e83c3807e
feat: add initial-admin CLI command 2026-02-18 11:29:13 +01:00
Johan Lundberg
bcddf5d1c8
feat: add create-invite CLI command 2026-02-18 11:27:36 +01:00
Johan Lundberg
174c6c001e
feat: migrate e2e test infrastructure to @playwright/test
Replace direct playwright dependency with @playwright/test and add
playwright.config.js for centralized test configuration. Update run.sh
to invoke 'npx playwright test' instead of running test files with node.
2026-02-18 11:10:23 +01:00
Johan Lundberg
0c3157ea3a
feat: handle pre-existing users in register_magic_link route 2026-02-18 10:29:44 +01:00
Johan Lundberg
a817fdb0f6
docs: add CLI module design and implementation plan 2026-02-17 14:09:14 +01:00
Johan Lundberg
1c21d6d199
test: add failing test for registering pre-existing users
Part of CLI module work (fastapi-oidc-op-9lb.1). The test verifies that
/register/{token} handles users already created by initial-admin.
2026-02-17 14:09:00 +01:00
Johan Lundberg
cd9469342b
refactor: fix lint warnings in webauthn login tests 2026-02-17 13:46:02 +01:00
Johan Lundberg
ebe5497879
feat: update login UI and JS for usernameless WebAuthn authentication 2026-02-17 13:42:35 +01:00
Johan Lundberg
32567b5484
feat: rewrite WebAuthn login routes for usernameless discoverable credential flow 2026-02-17 13:38:17 +01:00
Johan Lundberg
2ffe968342
feat: require discoverable credentials and prefer user verification in WebAuthnService 2026-02-17 13:18:46 +01:00
Johan Lundberg
8aebd04d2a
chore: add .worktrees/ to .gitignore 2026-02-17 12:58:25 +01:00
Johan Lundberg
51d03bc780
refactor: extract open_db() context manager from lifespan 2026-02-16 15:41:15 +01:00
Johan Lundberg
3462e38131
update Dockerfile: fastapi_oidc_op → porchlight 2026-02-16 15:35:21 +01:00
Johan Lundberg
7cb1adbd06
update all imports in test files: fastapi_oidc_op → porchlight 2026-02-16 15:34:53 +01:00
Johan Lundberg
14037117e7
update all imports in source files: fastapi_oidc_op → porchlight 2026-02-16 15:32:30 +01:00
Johan Lundberg
48f4e8ba73
update pyproject.toml: rename to porchlight, add typer dependency 2026-02-16 15:31:46 +01:00
Johan Lundberg
c5a80b51de
rename package directory fastapi_oidc_op → porchlight 2026-02-16 15:29:31 +01:00
Johan Lundberg
32b75cf92d
docs: add rename and CLI implementation plan 2026-02-16 15:26:25 +01:00
Johan Lundberg
5d97e496f1
fix: bind-mount README.md in dev container for hatchling build 2026-02-16 15:07:51 +01:00
Johan Lundberg
ec1c42b1d5
docs: add README with production and development setup instructions 2026-02-16 15:02:44 +01:00
Johan Lundberg
020e6c6fa0
feat: add Docker support with multi-stage build and compose profiles
Multi-stage Dockerfile (base/dev/prod) using uv for fast installs.
Dev stage supports hot-reload via bind-mounted source; prod stage
builds an optimised image with 4 uvicorn workers. docker-compose.yml
provides 'dev' and 'prod' profiles with named volumes for data.
2026-02-16 14:59:50 +01:00
Johan Lundberg
c381896de4
test: add comprehensive e2e test suite with shared helpers and DB seeding
Extract shared test runner (helpers.js), add file-based SQLite with
setup_db.py for fixture seeding, and add tests for auth guard, credentials
management, full registration flow, health endpoint, password auth, and
magic link registration errors. 66 checks across 7 test files.
2026-02-16 14:41:14 +01:00
Johan Lundberg
dbd7449ea1
test: add end-to-end OIDC authorization code flow test 2026-02-16 14:05:11 +01:00
Johan Lundberg
11a76d4ea8
feat: add OIDC userinfo endpoint 2026-02-16 13:57:10 +01:00
Johan Lundberg
e4e7cd237e
feat: add authorization complete and token endpoints 2026-02-16 13:47:48 +01:00