Role i uprawnienia kasjerów
HandyCafe wykorzystuje kontrolę dostępu opartą na rolach (RBAC) do zarządzania tym, co każdy pracownik może widzieć i robić w systemie. Każdy kasjer ma przypisaną rolę, a ta rola określa dokładne uprawnienia w całej aplikacji.
Typy ról
HandyCafe udostępnia trzy typy ról:
Administrator
Rola Administratora przyznaje nieograniczony dostęp do każdej funkcji systemu. Administratorzy mogą zarządzać kasjerami, wyświetlać wszystkie raporty, modyfikować ustawienia i wykonywać dowolne operacje. Ta rola jest przeznaczona dla właścicieli kafejek i starszych kierowników potrzebujących pełnej kontroli.
W systemie zawsze istnieje co najmniej jedno konto Administratora. Rola Administratora nie może być usunięta ani mieć ograniczonych uprawnień.
Domyślna
Rola Domyślna nie ma przypisanych specjalnych uprawnień. Kasjer z rolą Domyślną może się zalogować i wykonywać podstawowe operacje, ale nie ma dostępu do obszarów zastrzeżonych takich jak zarządzanie członkami, raportowanie czy konfiguracja konsol. Użyj jej jako punktu wyjścia dla nowych pracowników, którzy potrzebują obsługi tylko podstawowych zadań.
Niestandardowa
Role niestandardowe pozwalają dokładnie określać, jakie uprawnienia ma kasjer. Wybierasz nazwę, ustawiasz poziom, a następnie zaznaczasz lub odznaczasz poszczególne flagi uprawnień w sześciu kategoriach. Daje to szczegółową kontrolę nad dostępem każdego pracownika.
Kategorie uprawnień
HandyCafe posiada 22 indywidualne flagi uprawnień zorganizowane w 6 kategorii. Każda flaga kontroluje konkretną akcję lub widok w systemie.
1. Uwierzytelnianie (1 flaga)
| Flaga | Opis |
|---|---|
| CLIENT_LOGIN | Pozwala kasjerowi logować komputery klienckie (uruchamiać sesje w imieniu klientów) |
Bez tego uprawnienia kasjer nie może uruchamiać ani zarządzać sesjami klientów.
2. Członkowie (6 flag)
| Flaga | Opis |
|---|---|
| VIEW | Wyświetlanie listy członków i szczegulow członków |
| ADD | Tworzenie nowych kont członkowskich |
| DELETE | Usuwanie kont członkowskich z systemu |
| UPDATE | Edycja istniejących danych członków (imię, saldo itp.) |
| DISPLAY_EMAIL | Wyświetlanie adresów e-mail członków na liście członków |
| DISPLAY_GSM | Wyświetlanie numerów telefonów członków na liście członków |
Kasjer z wyłączonym VIEW może przeglądać listę członków, ale nie może tworzyć, edytować ani usuwać członków. Flagi DISPLAY_EMAIL i DISPLAY_GSM kontrolują widoczność wrażliwych danych kontaktowych. Jest to przydatne dla zachowania prywatności, gdy nie cały personel powinien widzieć dane osobowe.
3. Konsole (4 flagi)
| Flaga | Opis |
|---|---|
| VIEW | Wyświetlanie strony konsol i kart statusu konsol |
| ADD | Rejestracja nowych konsol do gier w systemie |
| DELETE | Usuwanie konsol z systemu |
| UPDATE | Edycja danych konsol (nazwa, adres MAC, cennik) |
4. Logi (4 flagi)
| Flaga | Opis |
|---|---|
| VIEW | Dostęp do strony logów |
| DISPLAY_FULL | Wyświetlanie pełnej historii logów (wszystkie daty) |
| DISPLAY_TODAY | Wyświetlanie tylko wpisów logów z dzisiaj |
| DELETE | Usuwanie wpisów logów |
Jeśli kasjer ma VIEW i DISPLAY_TODAY, ale nie DISPLAY_FULL, może widzieć tylko wpisy logów z bieżącego dnia. Jest to przydatne dla kierowników zmian, którzy muszą monitorować bieżącą aktywność bez dostępu do rejestrów historycznych.
5. Raporty (3 flagi)
| Flaga | Opis |
|---|---|
| PAGE_VIEW | Dostęp do strony raportów/raportu kasowego |
| DISPLAY_FULL | Wyświetlanie pełnej historii raportów (wszystkie daty) |
| DISPLAY_TODAY | Wyświetlanie tylko danych z dzisiaj |
Podobnie jak w przypadku logów, uprawnienia do raportów pozwalają kontrolować, czy personel może widzieć pełną historię finansową, czy tylko dane z bieżącego dnia. Kasjer z PAGE_VIEW i DISPLAY_TODAY może przeglądać transakcje swojej zmiany, ale nie ma dostępu do historycznych danych o przychodach.
6. Metody płatności (4 flagi)
| Flaga | Opis |
|---|---|
| MANAGE | Dostęp do obszaru zarządzania metodami płatności |
| ADD | Tworzenie nowych metod płatności (gotówka, karta, płatność mobilna itp.) |
| DELETE | Usuwanie metod płatności z systemu |
| UPDATE | Edycja danych istniejących metod płatności |
Podsumowanie
| Kategoria | Flagi | Łącznie |
|---|---|---|
| Uwierzytelnianie | CLIENT_LOGIN | 1 |
| Członkowie | VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL, DISPLAY_GSM | 6 |
| Konsole | VIEW, ADD, DELETE, UPDATE | 4 |
| Logi | VIEW, DISPLAY_FULL, DISPLAY_TODAY, DELETE | 4 |
| Raporty | PAGE_VIEW, DISPLAY_FULL, DISPLAY_TODAY | 3 |
| Metody płatności | MANAGE, ADD, DELETE, UPDATE | 4 |
| Razem | 22 |
Jak działają uprawnienia
Każda kategoria uprawnień posiada zestaw indywidualnych flag uprawnień. Każda flaga może być włączona lub wyłączona niezależnie za pomocą pól wyboru w edytorze ról.
Interfejs używa pól wyboru dla każdego uprawnienia. Po prostu zaznacz lub odznacz uprawnienia, które chcesz przyznać lub cofnąć. System automatycznie obsługuje przechowywanie danych - nie musisz ręcznie obliczać żadnych wartości.
Na przykład w kategorii Członkowie możesz niezależnie włączać lub wyłączać: VIEW, ADD, DELETE, UPDATE, DISPLAY_EMAIL i DISPLAY_GSM. Kasjer z zaznaczonymi tylko VIEW i UPDATE może widzieć i edytować członków, ale nie może ich dodawać ani usuwać.
Tworzenie konta kasjera
- Przejdź do Zarządzanie > Kasjerzy w aplikacji serwerowej.
- Kliknij przycisk Dodaj kasjera.
- Wpisz nazwę użytkownika kasjera. Będzie jej używał do logowania.
- Ustaw hasło. Wybierz silne hasło. To konto może mieć dostęp do danych finansowych i informacji o klientach.
- Wybierz rolę z listy rozwijanej. Możesz wybrać Administratora, Domyślną lub dowolną niestandardową rolę, którą utworzyłeś.
- Kliknij Zapisz, aby utworzyć konto.
Nowy kasjer może teraz zalogować się do serwera HandyCafe przy użyciu swoich poświadczeń.
Tworzenie niestandardowej roli
- Przejdź do Zarządzanie > Role kasjerów w aplikacji serwerowej.
- Kliknij przycisk Dodaj rolę.
- Wpisz nazwę roli (np. "Kierownik zmiany", "Młodszy kasjer", "Personel nocny").
- Ustaw poziom roli. Wyższe poziomy wskazują większą władzę. Jest to używane do porządkowania wyświetlania i hierarchii organizacyjnej.
- Zaznacz lub odznacz poszczególne uprawnienia we wszystkich sześciu kategoriach. Każde pole wyboru odpowiada jednemu z 22 ustawień uprawnień.
- Kliknij Zapisz, aby utworzyć rolę.
Po utworzeniu możesz przypisać tę rolę do dowolnego konta kasjera.
Egzekwowanie po stronie serwera
Uprawnienia są egzekwowane po stronie serwera, nie tylko ukrywane w interfejsie. Nawet jeśli ktoś obejdzie interfejs klienta lub zmanipuluje kod frontendowy, serwer waliduje każde zadanie względem uprawnień roli kasjera przed jego wykonaniem.
Oznacza to:
- Kasjer bez MEMBER_DELETE nie może usunąć członka, nawet wysyłając bezpośrednie zadanie API.
- Kasjer bez REPORT_DISPLAY_FULL nie może pobrać historycznych danych raportów niezależnie od sposobu dostępu do systemu.
- Wszystkie sprawdzenia uprawnień odbywają się w backendzie Rust przed wykonaniem jakiejkolwiek operacji na bazie danych.
Bezpieczeństwo: ograniczanie częstotliwości
W celu ochrony przed atakami brute-force HandyCafe egzekwuje ograniczanie częstotliwości logowania:
- 5 nieudanych prób logowania w ciągu 10-minutowego okna wyzwala automatyczną blokadę.
- Blokada trwa 15 minut, podczas których żadne próby logowania nie są akceptowane dla tego konta.
- Po wygaśnięciu okresu blokady kasjer może spróbować ponownie.
Dotyczy to zarówno ekranu logowania serwera, jak i logowania kasjera na komputerach klienckich.
Zarządzanie zmianami
Aktywność każdego kasjera jest śledzona indywidualnie przez całą zmianę:
- Wszystkie transakcje (płatności za sesje, płatności za zamówienia itp.) są rejestrowane z identyfikacją kasjera.
- Kasa śledzi saldo otwarcia i zamknięcia dla każdej zmiany kasjera osobno.
- Raporty zmianowe mogą być generowane per kasjer, pokazując dokładnie ile przychodu przetworzył podczas zmiany.
- Gdy kasjer się wylogowuje, zmiana jest zamykana i podsumowanie jest dostępne do przeglądnięcia.
Śledzenie per kasjer zapewnia rozliczalność i ułatwia identyfikację rozbieżności na koniec każdej zmiany.
Przykłady uprawnień
Scenariusz 1: Podstawowy kasjer Nowy pracownik, który potrzebuje tylko uruchamiać/zatrzymywać sesje i przyjmować płatności. Przypisz mu niestandardową rolę z włączonym tylko CLIENT_LOGIN. Nie może wyświetlać członków, raportów, logów ani konsol.
Scenariusz 2: Kierownik zmiany Zaufany pracownik nadzorujący pracę na hali. Przypisz mu rolę z CLIENT_LOGIN, MEMBER_VIEW, MEMBER_UPDATE, CONSOLE_VIEW, REPORT_PAGE_VIEW i REPORT_DISPLAY_TODAY. Może zarządzać sesjami, wyświetlać (ale nie usuwać) członków, widzieć konsole i sprawdzać dzisiejsze przychody, ale nie ma dostępu do pełnych raportów historycznych ani nie może modyfikować metod płatności.
Scenariusz 3: Kierownik nocny Kierownik obsługujący nocną zmianę samodzielnie. Przyznaj mu większość uprawnień z wyjątkiem MEMBER_DELETE, LOG_DELETE i PAYMENT_METHOD_DELETE. Może zarządzać wszystkim podczas zmiany, ale nie może trwale usuwać krytycznych danych.
Scenariusz 4: Personel z ograniczeniami prywatności Kasjer, który nie powinien widzieć danych kontaktowych klientów. Utwórz rolę z włączonym MEMBER_VIEW, ale z wyłączonymi DISPLAY_EMAIL i DISPLAY_GSM. Może wyszukiwać członków po imieniu, ale dane kontaktowe są ukryte.