- Usunięty błędny guard w summaryView() blokujący kolejne zamówienia - Token zamówienia z jednorazowego na TTL 30 min (multi-tab safe) - Logowanie błędów zamówień do logs/logs-order-YYYY-MM-DD.log - Redirect przy złym tokenie na /koszyk-podsumowanie zamiast /koszyk - Double-submit guard przeniesiony przed sprawdzenie tokena Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
103 lines
3.4 KiB
Markdown
103 lines
3.4 KiB
Markdown
---
|
|
phase: 13-basket-logging-ttl-token
|
|
plan: 01
|
|
subsystem: frontend
|
|
tags: [basket, checkout, logging, token, session, TTL]
|
|
|
|
requires:
|
|
- phase: 12-summaryview-redirect-fix
|
|
provides: summaryView() redirect guard removed
|
|
provides:
|
|
- Order error logging to logs/logs-order-YYYY-MM-DD.log
|
|
- TTL-based order submit token (30 min, multi-tab safe)
|
|
- Double-submit guard with logging
|
|
affects: []
|
|
|
|
tech-stack:
|
|
added: []
|
|
patterns: [TTL-based session tokens with backward compatibility]
|
|
|
|
key-files:
|
|
created: []
|
|
modified: [autoload/front/Controllers/ShopBasketController.php]
|
|
|
|
key-decisions:
|
|
- "Token format: array ['token' => ..., 'created_at' => ...] with backward compat for plain string"
|
|
- "Token failure redirect: /koszyk-podsumowanie instead of /koszyk (user keeps context)"
|
|
- "Double-submit guard moved BEFORE token validation (empty basket + existing order)"
|
|
|
|
patterns-established:
|
|
- "Order logging via logOrder() to logs/logs-order-YYYY-MM-DD.log"
|
|
|
|
duration: 5min
|
|
completed: 2026-03-25
|
|
---
|
|
|
|
# Phase 13 Plan 01: Basket logging + TTL token fix Summary
|
|
|
|
**Dodano logowanie błędów zamówień do pliku + przerobiono token z jednorazowego na TTL 30 min, umożliwiając składanie zamówień z wielu kart/po odświeżeniu.**
|
|
|
|
## Performance
|
|
|
|
| Metric | Value |
|
|
|--------|-------|
|
|
| Duration | ~5 min |
|
|
| Completed | 2026-03-25 |
|
|
| Tasks | 2 completed |
|
|
| Files modified | 1 |
|
|
|
|
## Acceptance Criteria Results
|
|
|
|
| Criterion | Status | Notes |
|
|
|-----------|--------|-------|
|
|
| AC-1: Logowanie błędów w basketSave() | Pass | 4 punkty logowania via logOrder() |
|
|
| AC-2: Token TTL 30 min — wiele kart działa | Pass | createOrderSubmitToken() reuses valid token |
|
|
| AC-3: Token wygasa po 30 min | Pass | isValidOrderSubmitToken() checks TTL, redirect → /koszyk-podsumowanie |
|
|
| AC-4: Double-submit guard dla pustego koszyka | Pass | Nowy guard przed sprawdzeniem tokena |
|
|
|
|
## Accomplishments
|
|
|
|
- Dodano metodę `logOrder()` zapisującą do `logs/logs-order-YYYY-MM-DD.log` + 4 punkty logowania w `basketSave()`
|
|
- Token zamówienia przerobiony z jednorazowego na TTL 30 min — wiele kart, odświeżenie, "wstecz" nie unieważniają tokena
|
|
- Backward compatibility ze starymi stringowymi tokenami w sesji
|
|
- Double-submit guard przeniesiony PRZED sprawdzenie tokena (pusty koszyk + istniejące zamówienie → redirect)
|
|
- Redirect przy błędzie tokena zmieniony z `/koszyk` na `/koszyk-podsumowanie`
|
|
|
|
## Files Created/Modified
|
|
|
|
| File | Change | Purpose |
|
|
|------|--------|---------|
|
|
| `autoload/front/Controllers/ShopBasketController.php` | Modified | Stała TTL, logOrder(), TTL token, logowanie, double-submit guard |
|
|
|
|
## Decisions Made
|
|
|
|
| Decision | Rationale | Impact |
|
|
|----------|-----------|--------|
|
|
| Token jako array z created_at | Umożliwia TTL check bez dodatkowej sesji | Backward compat z plain string |
|
|
| Redirect na /koszyk-podsumowanie | Użytkownik nie traci kontekstu, dostaje nowy token | Lepsza UX |
|
|
| Double-submit guard przed token check | Pusty koszyk = pewny double-submit, nie trzeba sprawdzać tokena | Szybsze wykrycie |
|
|
|
|
## Deviations from Plan
|
|
|
|
None — plan executed exactly as written
|
|
|
|
## Issues Encountered
|
|
|
|
None
|
|
|
|
## Next Phase Readiness
|
|
|
|
**Ready:**
|
|
- Poprawka gotowa do wdrożenia w update package
|
|
- Fazy 12 + 13 razem stanowią kompletny fix checkout flow
|
|
|
|
**Concerns:**
|
|
- None
|
|
|
|
**Blockers:**
|
|
- None
|
|
|
|
---
|
|
*Phase: 13-basket-logging-ttl-token, Plan: 01*
|
|
*Completed: 2026-03-25*
|