Witam,
Tworzę aplikację webową i zastanawiam się w jaki sposób zaimplementować dostęp do poszczególnych pól/akcji na podstawie uprawnień jakie posiada aktualnie zalogowany użytkownik. Aktualnie widok mam w stanie 'surowym', czyli osoba, która się zaloguje widzi wszystko i ma dostęp wszystkich funkcji aplikacji.
Use case:
Mam np. formatkę pracownika. Składa się ona z (trochę będę upraszczał) z następujących pól
- imię i nazwisko
- Adres
- Przyznana premia
W systemie istnieją 3 role, pracownik, manager, dział Księgowy:
Pracownik widzi tylko swoje dane adresowe (read/write)
Manager ma dostęp do wszystkiego (read/write)
Dział księgowy ma dostęp do wszystkiego na read.
Widzę 2 rozwiązania:
- dziedziczyć po każdym widoku i dla każdego profilu stworzyć nowy widok (eksplozja klas)
- konfigurować wszystko w jednym widoku w zależności od uprawnień (eksplozja if-ów)
Każde z tych rozwiązań ma swoje wady i zalety, może ktoś jest w stanie mi podpowiedzieć w którą stronę najlepiej pójść.
Dana strategia powinna rozwiązać następujące problemy:
- inna akcja pod linkiem (przyciskiem) w zależności od zalogowanej osoby
- włączanie i wyłączanie poszczególnych komponentów na stronie w zależności od profilu.
Z dodatkowych informacji to:
- system piszę w Javie
- widok jest oparty na apache wicket
Może macie gdzieś jakieś materiały gdzie można poczytać o autoryzacji? Jakieś wzorce, może jakiś sensowny projekt na githubie z którym warto się zaznajomić?