[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