Pisze autoryzację opartą na tzw. Rolach
User aby miał prawo coś wykonać musi być przypisany do wszystkich ról.
Aby nie trzeba było zbyt dużo przypisywać i aby ułatwić sobie prace, stworzyłem
coś takiego jak grupy (jest to zbiór ról) do których to można przypisać danego użytkownika (dziedziczy on tymsamym wszystkie role grupy). Dodatkowo
użytkownik może posiadać inne role nie zdefiniowane w żadnej z grup do któych
należy.
Na razie stworzyłem taki plan bazy danych, trzymającej to wszystko w ryzach.
Kod
+ Tabela "users"
| userID, userName, userPassword |
+ Tabela "roles"
| roleID, roleName |
+ Tabela "groups"
| groupID, groupName |
+ Tabela "relations"
| userID, roleID/groupID, ENUM('role', 'group') |
| userID, userName, userPassword |
+ Tabela "roles"
| roleID, roleName |
+ Tabela "groups"
| groupID, groupName |
+ Tabela "relations"
| userID, roleID/groupID, ENUM('role', 'group') |
Mam jednak duże wątpliwości co do jej optymalności

Z bazami nie mam wiele doświadczenia wiec licze na pomoc.
Dodatkowo, może ktoś ma pomysł na jakieś "rozbudowane" zapytanie, które
szybko wyciągneło by mi liste wszystkich ról, jakie posiada użytkownik (biorąc pod uwage grupy i role indywidualnie przydzielane userowi).