Commit Graph

2 Commits

Author SHA1 Message Date
Serreau Jovann
e6b410e715 Update sandbox fixtures: 3 events (past/ongoing/upcoming), 5 scan scenarios
Events:
- #1 Brocante de Printemps (past, offline)
- #2 Convention Cosplay (ongoing, online)
- #3 Marche de Noel (upcoming, online)

6 categories, 8 billets across all events

Scan scenarios for event #2 (ongoing):
- DEMO-0001: valid, never scanned
- DEMO-0002: refused, exit_definitive (already scanned with definitive exit)
- DEMO-0003: accepted, unlimited entry/exit (already scanned once)
- DEMO-0004: accepted, invitation (never scanned)
- DEMO-0005: refused, invalid (vote type - no generated ticket)

API doc: show sandbox event IDs and scan references with colored badges

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:15:38 +01:00
Serreau Jovann
40e89afc71 Create API controllers structure with JWT auth and sandbox fixtures
Controllers:
- ApiAuthController: POST /api/auth/login with JWT generation (HS256, 24h TTL)
  - Validates email + password against DB
  - Returns JWT token with userId, email, roles, iat, exp
  - Static verifyJwt() for use by live/sandbox controllers
  - Only ROLE_ORGANIZER can authenticate
- ApiLiveController: empty shell at /api/live (routes to implement)
- ApiSandboxController: empty shell at /api/sandbox (routes to implement)

Auth is shared: one /api/auth/login for both environments using real credentials.

Sandbox fixtures (data/sandbox/fixtures.json):
- 2 events (Brocante + Convention Cosplay)
- 4 categories across events
- 6 billets with varied types (billet, reservation_brocante)
- 6 billet details with descriptions, images, categories, events
- 4 scan results (2 accepted, 2 refused with different reasons)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 19:12:28 +01:00