Przykładowa aplikacja: beanguard-demo
beanguard-demo to niewielka, uruchamialna aplikacja Spring Boot w tym samym repozytorium co beanguard-client — najszybszy sposób, żeby zobaczyć pełną integrację (pobranie licencji, odczyt statusu, odświeżenie, przedłużenie, przeniesienie) w działaniu, zanim wpięsz ją we własną aplikację.
Uruchomienie
Potrzebujesz działającego beanguard-server (zobacz Szybki start). Uruchom aplikację — bez żadnej wcześniejszej konfiguracji:
cd beanguard-demo
mvn spring-boot:run
Następnie otwórz http://localhost:8090. Gdy połączenie z serwerem nie jest jeszcze skonfigurowane, najprostszy sposób to zwinięty panel Połączenie z serwerem na górze strony: wklej adres serwera oraz klucz publiczny/sekret AES z zakładki Klucze kryptograficzne w panelu admina i kliknij Zapisz i połącz ponownie — bez restartu.
Ten panel zapisuje prawdziwy sekret kryptograficzny (klucz AES) po stronie serwera bez dodatkowej ochrony. W porządku do lokalnej demonstracji, ale nie kopiuj tego wzorca do produkcyjnej aplikacji klienckiej.
Alternatywnie możesz ustawić BEANGUARD_SERVER_URL / BEANGUARD_SERVER_PUBLIC_KEY / BEANGUARD_SERVER_SECRET_KEY jako zmienne środowiskowe (albo edytować beanguard-demo/src/main/resources/application.yml) przed uruchomieniem — to staje się wartością domyślną, dopóki coś nie zostanie zapisane przez panel, który wtedy ma pierwszeństwo.
Profile trwałości
| Profil | Zachowanie |
|---|---|
memory (domyślny) | Połączenie z serwerem (jeśli ustawione przez panel), klucz/sekret licencji i ewentualne oczekujące przeniesienie żyją tylko w pamięci — restart aplikacji je czyści i ponownie pojawia się formularz licencji demo. |
file | Zapisywane do ./beanguard-demo-data/ (względem katalogu roboczego) — przetrwa restart. |
Profil zmienisz flagą --spring.profiles.active=file albo edytując spring.profiles.active w application.yml.
Profil memory to dobry sposób, żeby zobaczyć, jak Twoja własna aplikacja
zachowuje się, gdy loadLicence() po restarcie nie ma nic w cache'u.
To też powód, dla którego istnieje opisany niżej mechanizm przeniesienia —
to właśnie ścieżka odzyskania sekretu licencji utraconego w ten sposób.
Co możesz przetestować
- Wygeneruj licencję demo — gdy żadna licencja nie jest wczytana, aplikacja pokazuje formularz z e-mailem i numerem NIP. Jego wysłanie wywołuje samoobsługowy endpoint serwera, który wystawia licencję
DEMO(zobacz Licencje demo) i od razu pokazuje jejclaims, termin ważności i klucz. - Odśwież — pobiera bieżącą licencję z serwera na żądanie, zamiast czekać na cogodzinne automatyczne odświeżenie w
beanguard-client. Przydatne zaraz po edycji claimów albo przedłużeniu licencji w panelu admina. - Przedłuż — przekierowuje do
beanguard-shopz tożsamością licencji w adresie, tą samą ścieżką, którą przechodzi klient kupujący przedłużenie. - Przenieś na nową maszynę — ekran ze stanem pustym ma też drugi formularz do wpisania istniejącego klucza licencji, symulujący reinstalację (albo odzyskanie licencji z profilu
memoryutraconej przy restarcie). Serwer wysyła mailem link potwierdzający — jeśli uruchamiasz własnydocker-compose.ymlserwera, sprawdź go w Mailpit — trzeba go raz otworzyć, a potem kliknąć Sprawdź status na stronie demo, żeby odebrać nowy sekret.
Gdzie szukać w kodzie
FileBeanGuardConfiguration/InMemoryBeanGuardConfiguration(dev.beanguard.demo.licence) — dwie implementacjeBeanGuardConfigurationstojące za profilamifile/memory, w tymupdateServerConfig()stojące za panelem Połączenie z serwerem. Porównaj je z przykładem w Implementacji BeanGuardConfiguration.DemoController— jedyna klasa rozmawiająca bezpośrednio zLicenceRegistryiBeanGuardServer; wzór dla wzorca Odczytu statusu licencji we własnej aplikacji.
DemoLicenceKeyStore rozszerza BeanGuardConfiguration o kilka
dodatkowych metod (storeLicenceKeys, obsługa oczekującego przeniesienia)
używanych wyłącznie przez własne ekrany aplikacji demo — nie są częścią
kontraktu beanguard-client, więc Twoja implementacja ich nie potrzebuje.
