duke_piotr napisał/a:(1) podczas logowania zapisywanie do zmiennej session calej tabeli praw dostepu czy tez
Nie. Dlatego ze raz zapisanych do sesji uprawnien nie dasz rady zmienic w czasie rzeczywistym. Zalozmy ze blednie nadasz uzytkowniki uprawnienia super hiper admina, ten sie zaloguje ... i po ptakach 
maciek napisał/a:Chciałbyś wykorzystywać ACL'a do ustawiania dostępu do każdej wywoływanej metody w modelu ??
Listy kontroli dostępu wykorzystuje się na wyższym poziomie niż dostęp do bazy BD. Świetnie spisuje się przy określaniu dostępu do kontrolerów i ich akcji.
Niekoniecznie, ACL w kłejku jest troche kulawy. Załóżmy że masz tabele gdzie rekordy są dzielone pomiędzy użytkownikami np :
tabela datas :
id field_1, field_2, ........, field_n
1 ........., .........., ........, .........
2 ........., .........., ........, .........
3 ........., .........., ........, .........
4 ........., .........., ........, .........
5 ........., .........., ........, .........
mamy 3 userow : user1 , user2, user3
przypadek 1.
this->Data->find("all") dla usera 1 powinien zrocic rekordy o id 1,2,3 (user1 posiada uprawnienia R dla rekordow 1,2,3)
this->Data->find("all") dla usera 2 powinien zrocic rekordy o id 2,4,5 (user2 posiada uprawnienia R dla rekordow 2,4,5)
this->Data->find("all") dla usera 3 powinien zrocic rekordy o id 1,5 (user3 posiada uprawnienia R dla rekordow 1,5)
przypadek 2.
przy probie aktualizacji , odczytu, usuniecia przez user 1 rekordu o id 4 lub 5 - model powinien zwrocic blad informujacy o niedostacznyc uprawnieniach. Tak samo sprawa wyglada przy aktualizacji wile rekordow naraz.
itd ...
Moim zdaniem to wlasnie zadanie dla ACL'a - ktorego brak w kłekowej implementacji ww, oczywiscie da sie to osiagnac i w tej chwili wprowadzajac dodatkowe tabele lub filtrujac z wykorzystaniem ACL'a wyniki dowolnego zapytania (SELECT) , lub sprawdzajac uprawnienia (DELTE,UPDATE, REPLACE), ale powinno to byc zrobione automagicznie przez model / behavior.
Ewentualnie taka częśc logiki powinna być osadzona w bazie danych ( nie wiem czy to możliwe np w przypadku mysql).
Ostatnio edytowany przez robal77 (2009-03-23 19:59:02)