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