Przejdź do głównej zawartości

Uwierzytelnianie

Przegląd

Aplikacja obsługuje dwie metody logowania:

  • E-mail / hasło — z weryfikacją adresu e-mail
  • Google OAuth — logowanie jednym kliknięciem

Autentykacja oparta jest na bibliotece Better Auth z sesjami cookie (7 dni, odświeżanie co 24h).


Logowanie (/login)

Formularz

PoleWalidacja
E-mailWymagane, poprawny format e-mail
HasłoWymagane, min. 8 znaków

Zachowanie

  1. Użytkownik wypełnia formularz i klika Zaloguj się.
  2. Jeśli dane poprawne → przekierowanie do /dashboard/default.
  3. Jeśli e-mail nie jest zweryfikowany → wyświetlany jest komunikat o konieczności weryfikacji.
  4. Błędne dane → toast z komunikatem błędu.

OAuth

  • Przycisk Zaloguj się przez Google uruchamia flow Google OAuth.
  • Po sukcesie → przekierowanie do /dashboard/default.

Linki nawigacyjne

  • „Nie pamiętasz hasła?" → /forgot-password
  • „Zarejestruj się" → /register

Rejestracja (/register)

Formularz

PoleWalidacja
ImięWymagane
NazwiskoWymagane
E-mailWymagane, poprawny format e-mail
HasłoWymagane, min. 8 znaków
Powtórz hasłoMusi być identyczne z hasłem

Zachowanie

  1. Użytkownik wypełnia formularz i klika Zarejestruj się.
  2. Konto zostaje utworzone z rolą client (domyślna).
  3. E-mail weryfikacyjny jest wysyłany automatycznie (szablon Brevo).
  4. Użytkownik widzi komunikat o konieczności potwierdzenia e-maila.
  5. Po kliknięciu linku w e-mailu → konto aktywne, automatyczne zalogowanie.

Zaproszenia

Rejestracja może być powiązana z zaproszeniem (parametr ?invitation=TOKEN). Po ukończeniu onboardingu zaproszenie automatycznie oznaczane jest jako zaakceptowane.


Odzyskiwanie hasła (/forgot-password)

Formularz

PoleWalidacja
E-mailWymagane, poprawny format e-mail

Zachowanie

  1. Użytkownik podaje e-mail i klika Wyślij instrukcje.
  2. System wysyła e-mail z linkiem resetującym (szablon Brevo).
  3. Toast potwierdza wysłanie instrukcji.

Resetowanie hasła (/reset-password?token=TOKEN)

Wymagania

  • Parametr token w URL (z linku w e-mailu).
  • Bez tokenu → wyświetlany komunikat „Nieprawidłowy link resetowania hasła".

Formularz

PoleWalidacja
Nowe hasłoWymagane, min. 8 znaków
Powtórz hasłoMusi być identyczne z nowym hasłem

Zachowanie

  1. Użytkownik ustawia nowe hasło i klika Zresetuj hasło.
  2. Po sukcesie → przekierowanie do /login z komunikatem „hasło zostało zmienione".

Sesje i middleware

  • Sesje przechowywane w cookie better-auth.session_token (lub __Secure- w HTTPS).
  • Middleware (middleware.ts) kontroluje dostęp:
    • Trasy gościa (/login, /register, /forgot-password, /reset-password): zalogowani użytkownicy → redirect do /dashboard/default.
    • Trasy chronione (/dashboard/*): niezalogowani → redirect do /login.
    • Trasy publiczne (/api/auth/*): dostępne bez uwierzytelnienia.

Zmienne środowiskowe

ZmiennaOpis
BETTER_AUTH_URLBazowy URL aplikacji
BETTER_AUTH_SECRETSekret do szyfrowania sesji
GOOGLE_CLIENT_IDClient ID OAuth Google
GOOGLE_CLIENT_SECRETClient Secret OAuth Google
BREVO_API_KEYKlucz API Brevo (wysyłka e-mail)
BREVO_FROM_EMAILAdres nadawcy e-mail
BREVO_FROM_NAMENazwa nadawcy e-mail
BREVO_TEMPLATE_VERIFICATIONID szablonu weryfikacji
BREVO_TEMPLATE_RESET_PASSWORDID szablonu resetu hasła
BREVO_TEMPLATE_WELCOMEID szablonu powitalnego