![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 258 Pomógł: 17 Dołączył: 22.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Pracuję nad systemem do zarządzania firmą, który nie będzie sprzedawany w pudełku, ale każdy chętny będzie sobie mógł założyć konto i w obrębie jego pracować (dostęp przez www).
Implikuje to nałożenie ograniczeń do zasobów, tak aby user z firmy X nie mógł przeglądać dokumentów z firmy Y. Dotychczas poprzednicy napisali w tym celu sporo metod rozrzuconych po modelach i kontrolerach - ogólnie lekki burdel. Chciałbym trochę tego posprzątać i tę logikę przenieść do "warunkowych ACLi" np
Czy ktoś podziela taki pomysł (może powinienem zrobić ankietę)? Podobno poprzednicy to byli prawdziwi ninja i zastanawiam się czy przypadkiem nie próbuję wynaleźć koła na nowo. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 879 Pomógł: 189 Dołączył: 14.06.2006 Skąd: Bytom Ostrzeżenie: (0%) ![]() ![]() |
Problem spory i zależy od reszty architektury systemu.
Ogólnie: kontroler powinien zapytać model czy dany użytkownik może wykonać jakąś operację. Więc model powinien mieć interfejs udostępniający możliwość sprawdzenia tego dostępu i to jest chyba jasne. Natomiast najważniejsza kwestia jak model powinien sprawdzać czy jest dostęp. Próbowałem stworzyć podobny system do Twojego (niestety bardziej rozbudowany) i chyba się udało, więc Zend_ACL się nadaje. Ma moim zdaniem jest w nim parę niekonsekwencji (ale to moja interpretacja). Zdecydowanie dla użytkowników i np. dokumentów nie tworzyłbym tekstowych ról i zasobów tylko skorzystałbym z Zend_Acl_Role_Interface i Zend_Acl_Resource_Interface. Wtedy w CompanyAssertion dostajesz do sprawdzenia obiekt użytkownika i obiekt zasobu dzięki czemu sprawnie możesz pobrać od użytkownika i dokumentu firmę i wtedy porównać. Czyli coś takiego:
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 3.10.2025 - 02:05 |