Widget wsparcia Freshdesk¶
W prawym dolnym rogu stron BPP (frontend i moduł redagowania) wyświetla się zakładka „Pomoc". Otwiera ona formularz zgłoszenia z systemu Freshdesk (widget Freshworks). Skrypt widgetu jest pobierany z serwera Freshworks dopiero po najechaniu na zakładkę lub jej kliknięciu.
BPP używa dwóch osobnych widgetów Freshdesk:
| Kto | Widget | Uwierzytelnienie |
|---|---|---|
| użytkownik zalogowany | DJANGO_BPP_FRESHDESK_WIDGET_ID |
token JWT (jeżeli ustawiono sekret), w przeciwnym razie wstępne wypełnienie imienia i e-maila |
| użytkownik anonimowy | DJANGO_BPP_FRESHDESK_WIDGET_ID_ANON |
brak — ochronę przed spamem (captcha) konfiguruje się w ustawieniach tego widgetu w Freshdesku |
Do każdego zgłoszenia trafia adres strony, z której je wysłano (pole
cf_adres_url).
Zmienne konfiguracyjne¶
Zmienne ustawia się w pliku .env (patrz
Ustawienia zaawansowane) lub w środowisku kontenera.
W instalacjach opartych o bpp-deploy
jest to plik ${BPP_CONFIGS_DIR}/.env — trafia on zarówno do appservera, jak
i do workerów; po zmianie wystarczy make up.
| Zmienna | Domyślnie | Znaczenie |
|---|---|---|
DJANGO_BPP_FRESHDESK_WIDGET_ID |
205000000433 |
ID widgetu dla użytkowników zalogowanych. Pusta wartość wyłącza widget dla zalogowanych. |
DJANGO_BPP_FRESHDESK_WIDGET_ID_ANON |
(pusta) | ID widgetu dla użytkowników niezalogowanych. Pusta wartość = anonimowi nie widzą zakładki „Pomoc". |
DJANGO_BPP_FRESHDESK_WIDGET_JWT_SECRET |
(pusta) | Wspólny sekret do podpisywania tokenów JWT widgetu. Pusta wartość = brak uwierzytelnienia JWT. |
ID widgetu to liczba z kodu osadzenia (embed code), który Freshdesk pokazuje
w ustawieniach widgetu — fragment 'widget_id': 205000000433 lub adres
.../widgets/205000000433.js.
Przykład:
DJANGO_BPP_FRESHDESK_WIDGET_ID=205000000433
DJANGO_BPP_FRESHDESK_WIDGET_ID_ANON=205000000999
DJANGO_BPP_FRESHDESK_WIDGET_JWT_SECRET=wklej-tu-shared-secret-z-freshdeska
Sekret JWT jest poufny
Kto zna sekret, może podpisać token z dowolnym adresem e-mail i wysyłać
zgłoszenia w imieniu dowolnej osoby. Trzymaj go wyłącznie w .env /
sekretach deploymentu, nigdy w repozytorium. Sekret nie trafia do HTML-a
stron — tokeny są generowane po stronie serwera.
Sekret jest jeden na całe konto Freshdesk, a nie na instancję BPP.
Ustawienie go na wielu serwerach oznacza, że administrator dowolnego
z nich (każdy, kto czyta .env) może podszyć się pod użytkownika
dowolnej innej instancji. Włączaj JWT tylko na serwerach, nad którymi
masz pełną kontrolę.
Uwierzytelnianie JWT użytkowników zalogowanych¶
Gdy ustawiono DJANGO_BPP_FRESHDESK_WIDGET_JWT_SECRET, zalogowany użytkownik
jest automatycznie uwierzytelniany w widgecie
(dokumentacja Freshdesk):
- Po najechaniu na zakładkę „Pomoc" (lub kliknięciu) przeglądarka pobiera token z adresu
/freshdesk/widget-token/(dostępny tylko dla zalogowanych). - Token (HS256) zawiera imię i nazwisko, adres e-mail użytkownika BPP oraz czas wygaśnięcia (1 godzina; Freshdesk dopuszcza maksymalnie 2 godziny).
- Przed wygaśnięciem tokenu widget sam prosi o nowy — kolejne zapytanie do tego samego adresu.
Sekret znajdziesz w Freshdesku w Admin → Account → Security → Widget settings (w Freshdesk Omni: Admin → Data and Security → Ticket Security).
Uwagi:
- Token poświadcza adres e-mail zapisany w koncie BPP. BPP nie weryfikuje tego adresu (wpisuje go administrator albo import), więc „uwierzytelniony" oznacza „zalogowany do BPP z takim adresem w profilu".
- Przy włączonym JWT widget dla zalogowanych nigdy nie otwiera się bez
tokenu. Jeżeli tokenu nie da się uzyskać — użytkownik BPP nie ma adresu
e-mail (Freshdesk wymaga go w tokenie) albo zapytanie o token się nie
powiodło:
- gdy ustawiono
DJANGO_BPP_FRESHDESK_WIDGET_ID_ANON— ładuje się widget anonimowy (z jego captchą), a imię i e-mail (jeśli są) zostają tylko wstępnie wpisane w formularz, bez podpisu, - w przeciwnym razie skrypt Freshworks nie jest w ogóle ładowany, a zakładka „Pomoc" kieruje do support.iplweb.pl.
- gdy ustawiono
- Żeby Freshdesk sam odrzucał niepodpisane zgłoszenia (np. spreparowane ręcznie w przeglądarce), w ustawieniach widgetu dla zalogowanych ogranicz formularz kontaktowy i artykuły bazy wiedzy wyłącznie do uwierzytelnionych użytkowników.
Widget dla użytkowników anonimowych¶
Anonimowy widget jest osobnym widgetem w Freshdesku (inne ID). Włącz w nim
captchę i ewentualnie ogranicz pola formularza — po stronie BPP nie jest
potrzebna żadna dodatkowa konfiguracja poza DJANGO_BPP_FRESHDESK_WIDGET_ID_ANON.
Zakładka dla anonimów pojawia się na stronach publicznych oraz na stronie
logowania do modułu redagowania. Przy pustej zmiennej (domyślnie) anonimowi
nie widzą zakładki „Pomoc" — tak jak w wersjach sprzed wprowadzenia
osobnych widgetów.