brewlog/src/infrastructure/repositories
Jon Seager 03e03d87d9
feat(auth): replace password auth with WebAuthn passkeys
Replace username/password authentication with FIDO2/WebAuthn passkey-based
auth using webauthn-rs. Sessions and bearer tokens are unchanged — only the
way they are created changes.

- Add webauthn-rs, uuid, open, url deps; remove argon2, rpassword
- Add passkey_credentials and registration_tokens tables (migrations 17-18)
- Add domain entities, typed IDs, and repository traits for passkeys/tokens
- Add SQL repository implementations for passkeys and registration tokens
- Add ChallengeStore for in-memory WebAuthn ceremony state
- Add WebAuthn route handlers (register/auth start+finish ceremonies)
- Add CLI browser handoff for token creation (opens browser, local callback)
- Replace login form with "Sign in with Passkey" button
- Add registration page for first-user bootstrap via one-time token
- Replace BREWLOG_ADMIN_USERNAME/PASSWORD with BREWLOG_RP_ID/RP_ORIGIN
- Change default BREWLOG_URL from 127.0.0.1 to localhost (WebAuthn requires it)
2026-02-05 11:00:07 +00:00
..
bags.rs feat(home): limit open bags to 3 most recently updated 2026-02-04 17:19:26 +00:00
brews.rs feat(search): implement search filtering in repository SQL queries 2026-02-03 12:51:26 +00:00
cafes.rs refactor(cafes): remove notes field from Cafe entity 2026-02-03 21:02:37 +00:00
cups.rs fix(timeline): use consistent "Added" labels and simplify cup title 2026-02-04 16:01:03 +00:00
gear.rs feat(search): implement search filtering in repository SQL queries 2026-02-03 12:51:26 +00:00
macros.rs chore(lint): enable clippy pedantic and restriction lints 2026-02-02 17:55:16 +00:00
mod.rs feat(auth): replace password auth with WebAuthn passkeys 2026-02-05 11:00:07 +00:00
pagination.rs refactor: simplify overly nested and duplicated code across five modules 2026-02-04 19:25:35 +00:00
passkey_credentials.rs feat(auth): replace password auth with WebAuthn passkeys 2026-02-05 11:00:07 +00:00
registration_tokens.rs feat(auth): replace password auth with WebAuthn passkeys 2026-02-05 11:00:07 +00:00
roasters.rs refactor(roasters): remove notes field from Roaster entity 2026-02-03 21:18:48 +00:00
roasts.rs refactor(roasts): extract helpers to remove too_many_lines suppression 2026-02-03 14:09:53 +00:00
sessions.rs feat!: use numeric, database-generated IDs throughout 2025-11-25 18:21:04 +00:00
timeline_events.rs feat(search): implement search filtering in repository SQL queries 2026-02-03 12:51:26 +00:00
tokens.rs chore(lint): enable clippy pedantic and restriction lints 2026-02-02 17:55:16 +00:00
users.rs feat(auth): replace password auth with WebAuthn passkeys 2026-02-05 11:00:07 +00:00