![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 285 Pomógł: 37 Dołączył: 18.12.2007 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Po długiej przerwie w php muszę usiąść i zrobić w symfony2 drobny interfejs WWW do aplikacji desktopowej. Aplikacja posiada użytkowników, którzy w rozumieniu interfejsu WWW są administratorami i ich loginy przechowywane są w schemacie aplikacji. Aplikacja operuje na pewnych danych powiązanych z ludźmi, którzy w rozumieniu interfejsu WWW są użytkownikami i mogą sobie pewne infoprmacje sprawdzić, natomiast do aplikacji nie mają dostępu, ich loginy i hasła muszą być przechowywane w schemacie interfejsu WWW. Rola administratora sprowadza się do tworzenia użytkowników i nadawania im uprawnień do części użytkowej (to jakie upraweninia danemu użytkownikowi może nadać administrator określane jest w aplikacj w dość skomplikowany sposób i interfejs WWW musi odtworzyć algorytm i odpowiadać dynamicznie). Użytkownik może mieć dostęp do około 20 pozycji, które mają być konfigurowane przez Administratora. Oczywiście w necie jest mnóstwo tutriali o uprawnieniach i ACL, ale ze względu na stopień skomplikowania nie potrafię wyciągnąć wiedzy jak się za to w ogóle zabrać. Moje pytanie na ile mogę wykorzystać jakieś gotowe rozwiązania (JMS, FOS, Sonata), a na ile muszę zrobić to sam? Czy powienienem dla każdego uprawenienia definiować nową rolę dziedziącą po ROLE_USER? Na ile komplikuje sprawę chęć użycia wspólnej formatki logowania (np. wpływ na encje)? Proszę o pomoc, bo projekt ma skończony termin realizacji, a jak źle zacznę z uprawnieniami to pewnie położę ten termin. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 285 Pomógł: 37 Dołączył: 18.12.2007 Skąd: Łódź Ostrzeżenie: (0%) ![]() ![]() |
Postaram się doprecyzować.
Otóż administrator operuje na użytkownikach którzy mogą być zapisani w różnych jednostkach organizacyjnych. Każda taka jednostka organizacyjna przechowywana jest w osobnej tabeli. W jednostce organizacyjnej realne wartości to 2000 uzytkowników. Interfejs WWW w swoich strukturach przechowuje mapowanie login -> id jednostki organizacyjnej. Uprawenienia w aplikacji desktopowej realizowane są dynamicznie przez sprawdzenie czy administrator może w ogóle coś podejrzeć w jednostce organizacyjnej jeśli tak to na poziomie użytkownika zdefiniowane są poziomy zdefiniowanych uprawnień wyrażone intami dla pewnych grup merytorycznych. Abstrakcyjny przykład jednostki organizacyjne Fabryka 1, Fabryka 2; grupy merytoryczne przy użytkowniku: frekwencja, kontrakty. Teraz na podstawie iluś tabel w bazie jest analizowane czy Administrator 1 może włączyć uzytkownikowi iksińskiemu podgląd kontraktów. Od strony założeń nie może być warstw pośrednich dane mają być zawsze aktualne. A budowanie całej listy użytkowników ze wszystkich fabryk przy każdym odświeżeniu strony administratora nie ma sensu ze względu na skalę więc to co może dany administrator zmienić musi być ustalane dynamicznie. Wpływ na encje wydaje mi się nieistotny - potrzebuję chyba użyc po prostu dwóch UserProviderów, przynajmniej do takich wniosków doszedłem wertując dokumentację symfony2 i chciałbym się w tym upewnić. W miarę możliwości chciałbym żeby uprawnienia były realizowane jakoś dynamicznie. Rozsądnym wydaje mi się podzielenie na bundle. 1 bundle główny i reszta bundli z których każdy odowiada za jakąś pozycję w menu. Kontroler takiego bundla implementuje jakiś iMyBundle. Przy edycji uprawnień zczytuje się lista bundli chyba kernel.bundles jakoś to zapewni i sprawdzam czy dany bundle implementuje ww. interfejs. Jeśli tak to zczytuje jakąś statyczną metodą rolę, opis w menu i wymaganą grupę merytoryczną admina. Czy coś takiego trzyma się kupy? (Z założenia ja piszę taki portal, ale włączanie dodatkowych, później dodanych funkcjonalności u klienta to zajęcie osoby nie mającej pojęcia o php, dlatego chcaiłbym to mocno zautomatyzować) Jeśli tak to jak podejść do funkcjonalności która mogłaby mieć listę uprawnień (np uzytkownik może zrobić show, ale nie może edit). Ostatni problem związany z uprawnieniami, choć nie wiem czy to na ten wątek: zdefiniowane są grupy adresowe uważane za adresy wewnętrzne admin może się logować tylko z nich a user ma jakiś bool czy tylko z wew czy z dowolnego. Jak to w ogóle rozwiązać w co się wpinać przy logowaniu żeby sprawdzić i ewenetualnie zabronić logowania w zależności od loginu? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 10.10.2025 - 17:49 |