docs(auth): reflect single-cookie architecture; close A13-3
dev-docs/AUTH_ARCHITECTURE.md (v1.0 → v2.0): - Title section updated to single-SPA / single-cookie reality - Client Applications table collapsed to one row - Cookie Specification table collapsed to one row (crewli_app_token) - Token Lifecycle / Validation section: Origin-based resolution language removed; middleware described as origin-agnostic - Cross-app isolation paragraph removed (no second app) - Configuration Reference table marks FRONTEND_PORTAL_URL as legacy, pointing at TECH-FRONTEND-URL-CONSOLIDATE - New §11 "History" preserves the pre-WS-3 dual-cookie context for future readers, mentions PR-B2a + PR-B2b roles in the unwind dev-docs/BACKLOG.md — three new entries: - TECH-FRONTEND-URL-CONSOLIDATE: refactor email controllers to drop per-app URL map (EmailChangeController, PasswordResetController, PersonController) — low priority, code-cleanliness only - TECH-DOCS-APPS-PORTAL-PURGE: sweep apps/portal references from briefing/tooling docs (.cursor/, MASTER_PROMPT_*, SETUP, dev-guide, CLAUDE_CODE_TOOLING) — single chore(docs) PR, low priority - OPS — DNS retirement of portal.crewli.app — operational task, deferred until traffic monitoring confirms zero usage dev-docs/SECURITY_AUDIT.md: - A13-1 narrative actualised: pre-WS-3 dual-cookie context kept as history, status flipped to RESOLVED (the localStorage→httpOnly migration shipped earlier in the consolidation arc) - A13-3: status flipped to RESOLVED by WS-3 PR-B2b; description rewritten to reflect the new postLoginRedirect.ts validator and the 16 spec coverage - Priority remediation table item 8 strikes through A13-3 Backend test suite: 1487 passed (unchanged from Commit 2 baseline). Frontend: 223 passed (unchanged from Commit 1 baseline). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -823,6 +823,86 @@ introduceert is het natuurlijke moment.
|
||||
|
||||
---
|
||||
|
||||
### TECH-FRONTEND-URL-CONSOLIDATE — Refactor email controllers to drop per-app URL map
|
||||
|
||||
**Aanleiding:** WS-3 PR-B2b consolideerde naar één SPA en één
|
||||
auth-cookie. Drie controllers bouwen nog een per-app URL map
|
||||
(`'admin' / 'app' / 'portal' => config('app.frontend_*_url')`) voor
|
||||
outbound emails. In productie resolven alle `FRONTEND_*` env vars
|
||||
naar dezelfde host (`https://crewli.app`); de map-structuur is
|
||||
functioneel redundant maar staat structureel intact.
|
||||
|
||||
**Wat:** Refactor de drie controllers om alleen `frontend_app_url`
|
||||
te gebruiken. Verwijder de `'portal'` key uit de URL maps; collapse
|
||||
naar een single-URL consumer. Email templates die schakelen op
|
||||
`app === 'portal'` ook updaten.
|
||||
|
||||
**Files:**
|
||||
|
||||
- `api/app/Http/Controllers/Api/V1/EmailChangeController.php`
|
||||
- `api/app/Http/Controllers/Api/V1/PasswordResetController.php`
|
||||
- `api/app/Http/Controllers/Api/V1/PersonController.php`
|
||||
- Email templates die de `app` parameter consumeren
|
||||
|
||||
**Prioriteit:** Laag — purely code-cleanliness, geen functionele of
|
||||
security impact (productie env vars zijn al geconsolideerd). Effective
|
||||
post-WS-3 PR-B2b.
|
||||
|
||||
---
|
||||
|
||||
### TECH-DOCS-APPS-PORTAL-PURGE — Sweep remaining apps/portal references from briefing/tooling docs
|
||||
|
||||
**Aanleiding:** WS-3 PR-B2b purgeerde `apps/portal` uit de
|
||||
load-bearing files (`README.md`, `Makefile`, `CLAUDE.md`) en de
|
||||
deploy-config. De briefing/tooling docs verwijzen nog steeds naar
|
||||
de pre-consolidatie tweede SPA.
|
||||
|
||||
**Files:**
|
||||
|
||||
- `.cursor/instructions.md`
|
||||
- `.cursor/ARCHITECTURE.md`
|
||||
- `.cursor/rules/101_vue.mdc`
|
||||
- `.cursor/rules/102_multi_tenancy.mdc`
|
||||
- `dev-docs/MASTER_PROMPT_CC.md`
|
||||
- `dev-docs/MASTER_PROMPT_CURSOR.md`
|
||||
- `dev-docs/SETUP.md`
|
||||
- `dev-docs/dev-guide.md`
|
||||
- `dev-docs/CLAUDE_CODE_TOOLING.md`
|
||||
|
||||
**Skip:** `dev-docs/WS-3-SESSION-1C-AUDIT.md` — historical sprint
|
||||
audit, frozen in time, references are factually correct for the
|
||||
session it documents.
|
||||
|
||||
**Prioriteit:** Laag — single `chore(docs)` PR. Niet blokkerend voor
|
||||
runtime; LLM/IDE briefings produceren licht stale context tot dit
|
||||
landt. Effective post-WS-3 PR-B2b.
|
||||
|
||||
---
|
||||
|
||||
### OPS — Retire `portal.crewli.app` DNS record
|
||||
|
||||
**Aanleiding:** Post-WS-3 PR-B2b serves crewli.app als single SPA;
|
||||
WS-3 PR-B2b's deploy-config voegt een 301-redirect server block toe
|
||||
voor `portal.crewli.app → crewli.app$request_uri`. DNS is nog niet
|
||||
gerepointed en de zone bestaat nog.
|
||||
|
||||
**Wat:** Operationele taak (geen code). Twee stappen:
|
||||
|
||||
1. Monitor traffic naar het redirect server block voor 30 dagen.
|
||||
Bij significant verkeer: identificeer bron (oude bookmarks,
|
||||
externe links) en notify stakeholders voordat retirement gaat
|
||||
gebeuren.
|
||||
2. Bij nul / negligible verkeer: repoint DNS record naar
|
||||
`crewli.app` (CNAME), of verwijder de zone volledig en laat
|
||||
het redirect server block in nginx config voor de happstige
|
||||
transition.
|
||||
|
||||
**Prioriteit:** Laag — niet code, geen blocker. Pak op wanneer
|
||||
analytics monitoring volwassen genoeg is om "is dit nog in gebruik?"
|
||||
te beantwoorden. Geen deadline.
|
||||
|
||||
---
|
||||
|
||||
### TECH-PIVOT-ROLES-MULTI — Multi-role per (user, organisation) pivot
|
||||
|
||||
**Aanleiding:** WS-3 PR-B2a maakt context-aware routing op
|
||||
|
||||
Reference in New Issue
Block a user