Temat: Schemat bazy dla uprawnień użytkowników
Pytam bo przy małej ilości elementów czy niezbyt skomplikowanym systemie czasami zamiast kombinować, warto po prostu wrzucić pole text do użytkownika i oddzielając przecinkiem wymienić elementy do których ma uprawnienia.
Widziałem też zapisy w stylu "moduł/akcja, moduł2/akcja, moduł2/akcja2 itp...".
Można czasami po prostu zrobić tablicę uprawnień i przeprowadzić serializację. Stąd drugie pytanie. Chcąc w takim wypadku wyszukać użytkowników o konkretnych uprawnieniach, miał byś problem.
Przy większej ilości elementów oprzeć to lepiej na bazie danych. Tutaj z kolei pojawiają się pytania które zależne są od samej aplikacji a jak wspomniałeś, właściwie nie masz jej rozpisanej.
Przykład:
Tworzysz sobie część administracyjną, tam wypisujesz użytkownikowi np listę modułów czy obszarów w swojej aplikacji do których ma dostęp. I tu rodzi Ci się pytanie: czy pobrać na raz całą listę uprawnień i gdzieś ją przechowywać na czas korzystania z aplikacji ? Czy też może pokazywać pełną listę modułów i w momencie ich wybrania sprawdzać uprawnienia i wypisać odpowiedni komunikat.
Kolejna rzecz, użytkownik wchodzi do aplikacji i widzi jej całość. Czy są jakieś elementy które nie powinny być widoczne jeżeli nie ma do nich dostępu ? Jeżeli tak to pobieramy całość uprawnień ? Czy może tylko te które dotyczą danego widoku w aplikacji ?
Czy uprawnienia będą bardzo ziarniste ? Tzn czy użytkownik może dostać uprawnienia do pojedynczego elementu np w bazie danych a do pozostałych nie (a może 3-4 z 5000 ?), uprawnienia różnego typu (zapis, odczyt itp). No i czy jest to częsta praktyka czy wprowadzana "na wszelki wypadek".
Te i inne pytania powinny zostać postawione i powinna się znaleźć na nie odpowiedź. Jeżeli w tym momencie zbudujesz system uprawnień do aplikacji której nie masz to na 75% to się źle skończy.
Sugerował bym najpierw zaprojektować aplikacje (strukturę) a dopiero później system uprawnień adekwatny do niej. Bo jak będziesz chciał nadać uprawnienia np jakiejś pozycji w sklepie a potem jakiejś stronie w portalu to pasuje by to miało ręce i nogi.
Swego czasu podziwiałem system uprawnień na jakiś bitach. Był bardzo "lekki" dla aplikacji, bardzo szybki w działaniu itp ale jak już się sypnął to nie wiedziałeś co do czego. Nie mówiąc o tym że potencjalny klient na ogół ma różne dziwne życzenia i pasuje je przewidywać. Żeby jakiś drobiazg nie zajął programistom tygodnia dlatego że system w ogóle nie przewidywał czegoś.