Po wypróbowaniu kilku rozszerzeń zostałem przy yii-user oraz rights sprawiały najmniej problemów i najbardziej mi odpowiadają. Próbuję to teraz połączyć z Creating a database-driven hierarchical Structure combined with CMenu and superfish i tutaj mam problem ponieważ z Yii dopiero zaczynam i nie wszystko jest dla mnie jasne. Chciałbym z bazy pobierać pozycje do menu ale tylko odpowiednie do danej roli (grupy użytkowników).Yii-user nie grupuje użytkowników więc chyba najbardziej odpowiednie byłoby przypisanie do roli tu jednak rights przechowuje wszystkie role i inne wpisy razem w tabeli AuthItem więc chyba relacja z tabelą z wpisami z menu typu wiele do wielu nie jest możliwa? Chyba źle się do tego zabieram dlatego bardzo proszę o wskazówki jak to zrobić?
Page 1 of 1
menu odpowiednie do roli - grupy użytkowników
#2
Posted 16 March 2012 - 03:24 AM
Wydaje mi się, że możesz zrobić tam relacje wiele do wielu. Musisz tylko zapewnić spójność danych. Albo w php, albo jako triggery w bazie. W przypadku php, najlepiej upewnić się, że do tabeli asocjacyjnej trafiają tylko `id` elementów tabeli `Hierarchy` (z menu) dla których `parent` wynosi 1, oraz `id` tabeli `authItem` (z RBAC) dla których `type` jest równe CAuthItem::TYPE_ROLE (int 2).
Możesz też zapewnić spójność danych w triggerze. Sprawdzasz, wtedy przed insertem i przed updatem jaki jest `parent` i jaki jest `type` i w razie potrzeby przeszukujesz tabele `Hierarchy` w poszukiwania elementu nadrzędnego, lub tabele AuthItemChild w poszukiwaniu najbliżej nadrzędnej roli. Jest to rozwiązanie lepsze, jeżeli dane będą edytowane z rożnych interfejsów (np, aplikacja web + aplikacja desktop) ale też wymagająca dużo więcej pracy.
Proponuje rozwiązanie w php. Będziesz musiał zmodyfikować relacje w modelu dla `Hierarchy` tak, żeby filtrował po tabeli asocjacyjnej, oraz rozbudować rights o dodatkowy formularz, gdzie będziesz sobie przypisywał role do elementów menu.
Możesz też zapewnić spójność danych w triggerze. Sprawdzasz, wtedy przed insertem i przed updatem jaki jest `parent` i jaki jest `type` i w razie potrzeby przeszukujesz tabele `Hierarchy` w poszukiwania elementu nadrzędnego, lub tabele AuthItemChild w poszukiwaniu najbliżej nadrzędnej roli. Jest to rozwiązanie lepsze, jeżeli dane będą edytowane z rożnych interfejsów (np, aplikacja web + aplikacja desktop) ale też wymagająca dużo więcej pracy.
Proponuje rozwiązanie w php. Będziesz musiał zmodyfikować relacje w modelu dla `Hierarchy` tak, żeby filtrował po tabeli asocjacyjnej, oraz rozbudować rights o dodatkowy formularz, gdzie będziesz sobie przypisywał role do elementów menu.
---------------------------------------------------------------------
"Never memorize what you can look up in books."
Albert Einstein
"Never memorize what you can look up in books."
Albert Einstein
#3
Posted 16 March 2012 - 08:03 AM
też tak wcześniej kombinowałem i gdyby role były jako oddzielna tabela to byłoby idealne w przypadku gdy wszystko jest w jednej tabeli (kolumnie) trochę się sprawa komplikuje ale wystarczy powiązać tylko te z id=2 (role) i powinno być OK i tutaj chyba nic prostszego nie da się wykombinować
dzięki za info
dzięki za info
Share this topic:
Page 1 of 1

Help













