feat(F-172): completed feature

This commit is contained in:
chattie
2026-08-22 19:16:08 +02:00
parent c0870f6c48
commit 767860d546
12 changed files with 38 additions and 22 deletions

View File

@@ -6934,13 +6934,15 @@
"description": "Clicking My Account logs user out and redirects repeatedly to /auth/login; preserve storefront session and destination.",
"priority": "high",
"risk": "med",
"status": "pending",
"status": "done",
"created_at": "2026-08-22",
"gates": {
"reviewer": false,
"security": false,
"qa": false
}
"reviewer": true,
"security": true,
"qa": true,
"close": true
},
"completed_at": "2026-08-22T17:16:08Z"
},
{
"id": "F-173",

View File

@@ -2,11 +2,12 @@ import { NextResponse } from 'next/server';
export async function POST() {
const response = NextResponse.json({ ok: true });
response.cookies.set('session_token', '', {
response.cookies.set('mdv_session', '', {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'lax',
maxAge: 0,
path: '/',
});
return response;
}

View File

@@ -3,7 +3,7 @@ import { NextRequest, NextResponse } from 'next/server';
const API = process.env.NEXT_PUBLIC_API_URL ?? 'http://127.0.0.1:3000';
export async function GET(request: NextRequest) {
const sessionToken = request.cookies.get('session_token')?.value;
const sessionToken = request.cookies.get('mdv_session')?.value;
if (!sessionToken) {
return NextResponse.json({ user: null });
@@ -12,7 +12,7 @@ export async function GET(request: NextRequest) {
try {
const backendRes = await fetch(`${API}/auth/me`, {
headers: {
Cookie: `session_token=${sessionToken}`,
Cookie: `mdv_session=${sessionToken}`,
},
});

View File

@@ -0,0 +1,3 @@
# F-172
Use one cookie contract, mdv_session, across login/me/logout.

View File

@@ -0,0 +1,3 @@
# F-172
Mi cuenta preserves the storefront login session.

View File

@@ -0,0 +1,3 @@
# F-172
Auth me/logout now use backend `mdv_session` cookie. Runtime login 200, me returns authenticated user, account 200, logout clears cookie. Frontend build passes.

View File

@@ -0,0 +1 @@
{"feature_id":"F-172","agent":"leader","stage":"close","verdict":"APPROVED","checks":[{"item":"all gates/runtime/verify","ok":true}],"issues":[]}

View File

@@ -0,0 +1 @@
{"feature_id":"F-172","agent":"qa","stage":"qa_gate","verdict":"APPROVED","checks":[{"item":"login/me/account/logout runtime","ok":true},{"item":"build","ok":true}],"issues":[]}

View File

@@ -0,0 +1 @@
{"feature_id":"F-172","agent":"reviewer","stage":"review_gate","verdict":"APPROVED","checks":[{"item":"single cookie contract","ok":true},{"item":"runtime account flow","ok":true}],"issues":[]}

View File

@@ -0,0 +1 @@
{"feature_id":"F-172","agent":"security","stage":"security_gate","verdict":"APPROVED","checks":[{"item":"HttpOnly session remains server-side","ok":true},{"item":"logout path matches","ok":true}],"issues":[]}

View File

@@ -1,3 +1,3 @@
# F-173Checkout load failure
# F-172My Account session loop
Checkout conditionally returned before its final useMemo, violating React hook ordering when auth/cart loading state changed. Keep every hook unconditional.
Storefront login receives `mdv_session`, while /api/auth/me and logout incorrectly use `session_token`. Align proxy routes to the backend cookie so hydration/navigation preserves the authenticated user.

View File

@@ -1,64 +1,64 @@
{
"feature_id": "F-173",
"feature_id": "F-172",
"stage": "close",
"agent": "leader",
"action": "close",
"state": "running",
"next_agent": "leader",
"waiting_for": "Seleccionar una feature pending y actualizar este estado",
"updated_at": "2026-08-22T17:14:54Z",
"updated_at": "2026-08-22T17:16:08Z",
"timeline": [
{
"ts": "2026-08-22T17:14:12Z",
"ts": "2026-08-22T17:15:07Z",
"agent": "leader",
"stage": "intake",
"state": "running",
"message": "Fix checkout hook-order crash"
"message": "Align storefront auth session cookie"
},
{
"ts": "2026-08-22T17:14:12Z",
"ts": "2026-08-22T17:15:07Z",
"agent": "architect",
"stage": "design",
"state": "running",
"message": "design"
},
{
"ts": "2026-08-22T17:14:12Z",
"ts": "2026-08-22T17:15:07Z",
"agent": "implementer",
"stage": "build",
"state": "running",
"message": "Make checkout hooks unconditional"
"message": "Fix storefront session cookie"
},
{
"ts": "2026-08-22T17:14:53Z",
"ts": "2026-08-22T17:16:07Z",
"agent": "reviewer",
"stage": "review_gate",
"state": "running",
"message": "review"
},
{
"ts": "2026-08-22T17:14:53Z",
"ts": "2026-08-22T17:16:07Z",
"agent": "security",
"stage": "security_gate",
"state": "running",
"message": "security"
},
{
"ts": "2026-08-22T17:14:54Z",
"ts": "2026-08-22T17:16:07Z",
"agent": "qa",
"stage": "qa_gate",
"state": "running",
"message": "qa"
},
{
"ts": "2026-08-22T17:14:54Z",
"ts": "2026-08-22T17:16:08Z",
"agent": "documenter",
"stage": "document",
"state": "running",
"message": "document"
},
{
"ts": "2026-08-22T17:14:54Z",
"ts": "2026-08-22T17:16:08Z",
"agent": "leader",
"stage": "close",
"state": "running",