Przejdź do głównej zawartości

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