Tworzę system menu w PHP i MySQL. Będę miał kilka różnych menu i do każdego menu będzie podłączony zestaw elementów menu.
Na stronie mam również różne uprawnienia użytkowników, niektórzy użytkownicy mogą zobaczyć wszystkie elementy menu, a niektóre elementy są ukryte przed niektórymi użytkownikami. Jestem ciekawy, jak mogę obsłużyć uprawnienia w czysty sposób, który pozwoli na łatwe dodawanie większej liczby użytkowników w przyszłości.
Do tej pory mam coś takiego:
-------------------
|Menus
-------------------
|id| |display name|
-------------------
----------------------------------------------------------
|Menu items
----------------------------------------------------------
|id| |menu_id| |label| |link| |parent| |sort| |permission|
----------------------------------------------------------
Myślę, że permission
kolumna może być ciągiem oddzielonym przecinkami, który mogę dopasować do identyfikatora bieżącego użytkownika. Może to być również odniesienie do innej tabeli, która definiuje wszystkie możliwe kombinacje obecnie istniejących uprawnień.
Jednym rozwiązaniem może być po prostu przechowywanie wielu pozycji menu, w których jedyną różnicą jest pozwolenie, chociaż prowadziłoby to do podwójnego przechowywania i być może uciążliwe.
Bardzo chciałbym usłyszeć, jak to ustrukturyzować i co można uznać za czyste, dynamiczne i kiepskie.
Dzięki.