[Erp5-poland] Security zmieniające się w czasie życia systemu

Jacek Medrzycki jacek w erp5.pl
Czw, 14 Lut 2008, 10:19:05 CET


Łukasz Nowak pisze:
> On 2008-02-14, 09:17:32
> Jacek Medrzycki <jacek w erp5.pl> wrote:
>
>   
>> Łukasz Nowak pisze:
>>     
>>> Wybacz. Źle to ująłem
>>>
>>> Przez błąd rozumiałem fakt, że nie jest brana
>>> pod uwagę poprawnie definicja poziomów dostępu - dokładnie jej
>>> dodatkowe restrykcje.
>>>   
>>>       
>> Czekaj, bo teraz ja nie łapię.
>> Jakie dodatkowe restrykcje nie są brane pod uwagę?
>>     
>
> Pole Condition w manage_editRolesForm.
>   
Napisałęs

Dziwna sprawa. Użytkownik dodaje Person. Jest ok. Użytkownik robi
przypisanie 'role/internal'. Nadal ma prawa do obiektu. Czyszczę
wszystkie cache factory. Nadal ma Assignora. Dopiero jak w
portal_types/Person kliknę 'Update role settings' znikają mu
uprawnienia.

No to jest IMHO działanie prawidłowe. Rolki nie przeliczają się same, 
trzeba to wymusić. Najlepiej właśnie przez interaction workflow (w 
projekcie niemieckim  był w ogóle osobny workflow pt. 
security_interaction_workflow, który był podpinany do każdego 
portal_typu i jego interaction metod sprawdzało portal_type obiektu i 
dokonywało stosownych czarów).


> Mam inne podejście. Skoro jest jakaś funkcjonalność, mogę przyjąć
> ryzykowne założenie, że działa, prawda? To nie zadziałało - ustawienie
> Condition nie zostało wzięte pod uwagę, przy edycji obiektu.
>   
Czekaj. Kiedy nie zadziałało ustawienie Condition? To 
object.isMemberOf('role/internal') było w conditionie?
No i OK. Zmiana w obiekcie na /role/internal nie spowoduje 
automatycznego przeliczenia security na obiekcie z powodów wyłuszczonych 
w poprzednim poście. I to IMHO nie ma związku z tym, czy to jest 
condition czy nie, po prostu rolki przeliczane są na żądanie a nie w 
locie. Według mnie to działa tak, że po odpaleniu 
updateLocalRolesOnSecurytiyGroups przelatuje po wszystkich definicjach 
rolek i dla każdej generuje stosowny mapping. Jeśli condition nie jest 
spełnione, to po prostu pomija tę definicję rolki, tak jakby jej nie 
było. Czyli to cały czas jest statyczne a nie dynamiczne condition 
(czyli jeśli w condition da się warunek, że day_of_week ma być środa, i 
update zrobi się w środę, to w czwartek dalej będzie się zachowywać 
jakby condition był spełniony, o ile się na nowo nie przeliczy).
Chyba że się strasznie mylę i to działa inaczej, ale wszelkie moje 
doświadczenia wskazują, że działa tak jak napisalem.

J.



More information about the Erp5-poland mailing list