Johan Lundberg
2b8d3e9800
feat: add admin user detail page with profile, groups, credentials, and actions
2026-02-19 13:44:14 +01:00
Johan Lundberg
b5ea9950a2
fix: use frozenset for SAFE_METHODS and extract SESSION_KEY constant
2026-02-19 13:42:18 +01:00
Johan Lundberg
6a9e32f74d
feat: add admin invite creation endpoint
2026-02-19 13:36:11 +01:00
Johan Lundberg
f93290d43e
feat: add CSRF middleware with synchronizer token pattern
2026-02-19 13:26:33 +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
be35c17fa5
Merge branch 'feature/consent-screen'
2026-02-19 11:16:51 +01:00
Johan Lundberg
3b1c145e31
fix: add type annotation to approved_scopes for type checker
2026-02-19 11:16:01 +01:00
Johan Lundberg
078892a413
fix: validate consent action and add error check after re-parse
2026-02-19 11:09:14 +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
5c4269fd6e
feat: add consent page template
2026-02-19 09:52:45 +01:00
Johan Lundberg
1d8fd91f68
feat: add consent check to authorization flow
2026-02-19 09:47:59 +01:00
Johan Lundberg
9ccc6c885f
feat: add Consent model, migration, and repository
2026-02-18 15:01:35 +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
64f8c1936b
refactor: fix lint warnings and remove stale type: ignore comments
2026-02-18 13:08:03 +01:00
Johan Lundberg
eeb09321e2
feat: register OIDC clients from config file
2026-02-18 12:48:23 +01:00
Johan Lundberg
61ca3063ca
feat: add TOML config file support with client registrations
2026-02-18 12:44:00 +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
0c3157ea3a
feat: handle pre-existing users in register_magic_link route
2026-02-18 10:29:44 +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
51d03bc780
refactor: extract open_db() context manager from lifespan
2026-02-16 15:41:15 +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
c5a80b51de
rename package directory fastapi_oidc_op → porchlight
2026-02-16 15:29:31 +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
Johan Lundberg
18e9e7f2b5
feat: redirect to OIDC authorization after login when pending
2026-02-16 13:34:06 +01:00
Johan Lundberg
d8c891af89
feat: add OIDC discovery, JWKS, and authorization endpoints
2026-02-16 13:33:40 +01:00
Johan Lundberg
95d184ce0f
feat: integrate idpyoidc server into app lifespan
2026-02-16 13:29:39 +01:00
Johan Lundberg
2426e0675c
feat: add idpyoidc server initialization
2026-02-16 13:24:54 +01:00
Johan Lundberg
02b75a3eca
feat: add OIDC claims mapping and PorchlightUserInfo source
2026-02-16 12:52:43 +01:00
Johan Lundberg
fd098a4eff
refactor: simplify logo to clean doorway arch with amber light
...
Remove glow ring, widen arch proportions, and center light element.
Three clean elements: arch, threshold, amber circle.
2026-02-16 12:50:58 +01:00
Johan Lundberg
84e61464c7
feat: add Porchlight branding with logo, favicon, and redesigned CSS theme
...
Rebrand from FastAPI OIDC OP to Porchlight with warm amber/gold identity:
- Add doorway-with-light SVG logo and 32x32 PNG favicon
- Rewrite style.css with full design system (color tokens, spacing scale,
typography scale, section cards, button variants, dark mode)
- Update base template with site header, logo, and favicon
- Update all page titles and FastAPI app title to Porchlight
2026-02-16 12:08:19 +01:00
Johan Lundberg
e15dcc4745
feat: add authentication routes with session login, WebAuthn, and credential management
...
Implement Phase 4 auth routes: password login/logout, WebAuthn
registration and authentication, magic link registration, and
credential management pages with HTMX. Includes session middleware,
Jinja2 templates, vendored HTMX, and last-credential guardrails.
120 tests passing.
2026-02-16 11:39:50 +01:00
Johan Lundberg
4774ae3c2f
feat: add MagicLinkService with token create/validate/cleanup
2026-02-13 15:02:53 +01:00
Johan Lundberg
872001c6de
feat: add WebAuthnService with fido2 registration and authentication
2026-02-13 14:48:38 +01:00
Johan Lundberg
e6f5ea7f0c
feat: add PasswordService with argon2 hash/verify
2026-02-13 14:35:32 +01:00
Johan Lundberg
a45604ff2f
feat: add lifespan integration and dependency injection
2026-02-13 13:59:59 +01:00
Johan Lundberg
9f4914a922
feat: add SQLiteMagicLinkRepository with tests
2026-02-13 13:53:14 +01:00
Johan Lundberg
bbe0dac8cb
feat: add SQLiteCredentialRepository with tests
2026-02-13 13:49:25 +01:00
Johan Lundberg
d941209f1e
feat: add SQLiteUserRepository with tests
2026-02-13 13:36:38 +01:00
Johan Lundberg
6c4ba79eed
feat: add DuplicateError domain exception
2026-02-13 13:14:01 +01:00
Johan Lundberg
627675fff1
feat: add SQLite migration runner
2026-02-13 13:08:44 +01:00
Johan Lundberg
bfa5b2e8d0
feat: add initial SQLite migration schema
2026-02-13 12:57:26 +01:00
Johan Lundberg
9d7a67b2d2
fix: add collision retry for userid generation
2026-02-12 15:34:31 +01:00