Uwierzytelnianie
CakeMarket wykorzystuje Auth.js v5 ze strategią JWT do zarządzania sesjami.
Stos uwierzytelniania
- Dostawca: Auth.js v5
- Strategia: JWT (sesje bezstanowe)
- Przechowywanie sesji: Tokeny JWT w ciasteczkach HTTP-only
- Obsługa gości: Token localStorage + odcisk przeglądarki
Pomocniki uwierzytelniania
Znajdują się w src/lib/auth/helpers.ts:
getCurrentUser()
Zwraca bieżącego uwierzytelnionego użytkownika lub null. Nie rzuca wyjątku.
requireAuth()
Zwraca bieżącego użytkownika lub rzuca błąd 401. Używaj w trasach API wymagających uwierzytelnienia.
requireAdmin()
Zwraca bieżącego użytkownika, jeśli ma rolę administratora, lub rzuca błąd 403.
requireOrgMember(orgId: string)
Weryfikuje, czy bieżący użytkownik jest członkiem wskazanej organizacji. Rzuca błąd 403, jeśli nie jest.
requireOrgAdmin(orgId: string)
Weryfikuje, czy bieżący użytkownik jest administratorem wskazanej organizacji. Rzuca błąd 403, jeśli nie jest.
Sesje gości
Goście są identyfikowani za pomocą kombinacji:
- Tokenu UUID przechowywanego w
localStorage - Odcisku przeglądarki
Możliwości gości:
- Tworzenie zapytań o torty
- Przeglądanie i akceptowanie ofert
- Tworzenie zamówień i dokonywanie płatności
Konwersja gościa na użytkownika
POST /api/guest/convert migruje sesję gościa do pełnego konta użytkownika:
- Przenosi wszystkie istniejące zapytania
- Przenosi wszystkie istniejące zamówienia
- Zachowuje preferencje
- Walidacja przez
guestConvertSchema
Middleware bezpieczeństwa
src/middleware.ts obsługuje:
- Nagłówki CORS dla tras API
- Dopasowywanie tras dla chronionych ścieżek
- Nagłówki bezpieczeństwa (CSP, HSTS, X-Frame-Options) skonfigurowane w
next.config.ts