docs(roadmap): add Phase 19 Local Auth (No-OIDC Mode)

This commit is contained in:
Lucas Berger
2026-06-15 13:11:34 -04:00
parent 0f3c3784e6
commit 2bf5a42ac2
3 changed files with 20 additions and 0 deletions
+19
View File
@@ -656,3 +656,22 @@ Plans:
Plans:
- [ ] TBD (run /gsd-plan-phase 18 to break down)
### Phase 19: Local Auth (No-OIDC Mode)
**Goal:** Let an operator run FamilySync entirely on **local DB users with no OIDC** — username/password accounts and a local login flow that coexists with the Authelia OIDC path — and **optionally wire OIDC in later** by claiming/linking an existing local user to an OIDC identity. Removes the hard dependency on a deployed Authelia for small/solo self-hosters.
**Mode:** standard
**Depends on:** Phase 12 (Initial Setup Wizard) — builds directly on the pre-OIDC **local-user foundation** introduced there: nullable `users.oidc_iss`/`oidc_sub` + the claimed/pending marker, and the first-login-claims merge. Phase 19 generalizes that single bootstrap local user into a full local-account model + login.
**Requirements**: TBD (derive an AUTH-LOCAL-0x set during discuss/spec — local credential storage with proper password hashing, local login session issuance reusing the existing session-cookie path, coexistence with the OIDC middleware, and OIDC-link of an existing local user).
**Plans:** 0 plans
**Provenance:** Deferred from the Phase 12 discussion (2026-06-15) — see `.planning/phases/12-initial-setup-wizard/12-CONTEXT.md` §Deferred Ideas. The operator runs FamilySync this way themselves and wants no-OIDC operation as a first-class mode.
**Open questions for discuss/spec:**
- Password hashing/storage choice (e.g. argon2id/bcrypt) and how it sits alongside the env-only secret kernel from Phase 12.
- How local login coexists with `oidcAuthMiddleware` ordering in `apps/api/src/index.ts` (route-level auth strategy selection vs. a mode flag in `app_config`).
- The OIDC-link flow: claiming an existing local user into an `oidc_iss+oidc_sub` identity without violating the D-10 "identity is OIDC, never email" rule.
- Whether "local mode vs OIDC mode" is a deploy-time switch or both can be live simultaneously.
Plans:
- [ ] TBD (run /gsd-plan-phase 19 to break down)