Uprawnienia w modularnym systemie

0

Czytam sobie o modularnym monolicie i tak się zastanawiam: czy w modularnym systemie powinienem mieć jeden moduł zarządzający uprawnieniami w całej aplikacji (1) czy raczej każdy moduł powinien sam zarządzać tym, jakie uprawnienia mają użytkownicy w danym module (2)?

Ogólnie zakładam (być może błędnie), że wewnątrz modułu (warstwa aplikacji) potrzebuję informacji o tym, jakie uprawnienia ma użytkownik, i nie zawsze wystarczy sprawdzić uprawnienia na poziomie kontrolera (tzn. jakby bardzo chcieć, to by się dało, ale czy powinno się tak robić?). Mogę chociażby chcieć zwrócić uproszczony widok dla użytkownika niemającego odpowiedniego uprawnienia, wysłać powiadomienia do użytkowników mających dane uprawnienie czy mogę mieć logikę w stylu jeśli zaszło X a użytkownik nie ma uprawnienia Y, to zwróć błąd, no chyba, że ma dodatkowo uprawnienie Z.

W podejściu (1) prawie wszystkie moduły miałyby referencję do modułu trzymającego logikę uprawnień, ale może to jest taka sytuacja, w której warto złamać zasadę niezależności modułów? W podejściu (2) każdy moduł miałby swoje uprawnienia, ale też musiałby mieć uproszczoną wersję użytkownika, żeby móc powiązać użytkowników z uprawnieniami, tak?

Ogólnie kiedy wybrać (1) a kiedy (2)? Jest jakieś rule of thumb? Jak to u Was wygląda?

1

Centralny (sub) moduł uprawnień powinien wystawić API, jakim programiści modułów mają określać w swoich modułach uprawnienia.

ale może to jest taka sytuacja, w której warto złamać zasadę niezależności modułów?

Nie ma takiej zasady. Jest zasada niezależności od IMPLEMENTACJI, ale jest zależność od API, jakie moduł wystawia (co jest oczywiste).

ps trochę dziwnie się czyta, co piszesz, jakbyś za bardzo sie nakarmił mikroserwisami.
pps. chyba się zgodzisz, że są pewne moduły centralne, od API których zależą moduły "aplikacyjne" ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0