Zaproszenia
Przegląd
System zaproszeń pozwala pracownikom wysyłać e-maile z zaproszeniami do nowych klientów. Zaproszenie zawiera link rejestracyjny z unikalnym tokenem, ważnym przez 7 dni.
Przepływ
- Pracownik otwiera stronę
/dashboard/clientsi klika Zaproś klienta. - Podaje adres e-mail nowego klienta.
- System tworzy zaproszenie w statusie
draft. - E-mail zaproszeniowy jest wysyłany (szablon Brevo).
- Po udanym wysłaniu → status zmienia się na
pending. - Zaproszony klika link → otwiera się
/register?invitation=TOKEN. - Po ukończeniu rejestracji i onboardingu → status zmienia się na
accepted.
Statusy
| Status | Opis |
|---|---|
draft | Utworzone, e-mail jeszcze nie wysłany |
pending | E-mail wysłany, oczekiwanie na rejestrację |
accepted | Klient zarejestrował się i ukończył onboarding |
expired | Token wygasł (po 7 dniach) |
Lista zaproszeń
Dostęp: Tylko rola employee lub admin.
Tabela na stronie /dashboard/clients zawiera historię zaproszeń z kolumnami:
- E-mail zapraszanego
- Status (
pending/accepted/expired) - Data wygaśnięcia
- Data utworzenia
API
POST /api/invitations
Tworzy i wysyła zaproszenie.
Dostęp: Employee/Admin.
Body:
{
"email": "nowy.klient@example.com"
}
| Kod | Opis |
|---|---|
| 200 | Zaproszenie wysłane |
| 400 | Nieprawidłowy email |
| 403 | Brak uprawnień (nie employee/admin) |
| 409 | Zaproszenie dla tego emaila już istnieje (i jest aktywne) |
| 500 | Błąd wysyłania e-maila |
GET /api/invitations
Pobiera listę wszystkich zaproszeń posortowaną malejąco po dacie.
Dostęp: Employee/Admin.
Odpowiedź:
[
{
"id": "inv-001",
"email": "klient@example.com",
"status": "pending",
"expiresAt": "2026-04-19T00:00:00.000Z",
"createdAt": "2026-04-12T00:00:00.000Z"
}
]
Bezpieczeństwo
- Token to UUID v4 (kryptograficznie losowy).
- Zaproszenie wygasa po 7 dniach.
- Duplikaty blokowane — nie można wysłać zaproszenia na adres z aktywnym zaproszeniem
pending. - URL zaproszeniowy walidowany (tylko
http:/https:— ochrona przed XSS). - W przypadku błędu wysyłki e-maila zaproszenie
draftjest natychmiast usuwane.