[Zope3-dev] Form framework, adapters and pau
Jim Fulton
jim at zope.com
Thu May 19 09:17:26 EDT 2005
Dominik Huber wrote:
> (This mail seems to be lost some where so I take another try.)
Sorry if this was my fault.
> Hi Jim,
>
> I cleaned up the locatableadapters-branch, but I did not implement an
> additonal locate attribute to the adapter directive yet, because it's
> pretty tricky to separate trusted-ness from location-ness.
How so?
> I already raised the question what the precedence should be if the
> <class...-and-<adapter...-pattern is used within the registration of
> trusted adapters.
OK, I'll anser that. If a permission is used in an adapter directive,
it takes precedence over declarations made in a class directive.
(In the future, I'd like to change the way security declarations work
so that, perhaps, they are set on a name-by-name basis. So then,
declarations for names in other interfaces wouldb't be lost when
making a declaration for an adapter to a particular interface.)
>>> Question: What should the precedence be if I use the sample zwiki
>>> registration (modified example above)?
>>>
>>> At the moment (trunk) the permission attribute of the <adapter... is
>>> ignored and the permission-set of the <class... is invoked
>>> (experimental verification only).
>>
>>
>>
>> I couldn't tell you what the precedence should be because I didn't
>> anticipate that someone would do both.
>
>
>
> The precedence is <class... then <adapter... because the
> _protectedFactory (used for adapter permissions) does only set the
> permission if the adapter does not provide an __Security_checker__
> attribute (see also zope.security.checker.ProxyFactory).
I don't see this. The _protectedFactory sets the __Security_checker__
regardless of whether it is already set.
Also making declarations with the class directive does not set
__Security_checker__ attribute on the class.
zope.security.checker.ProxyFactory) checks for __Security_checker__
before looking for class-based declarations.
> Therefore we can't use the permission attribute of the <adapter...
> directive to switch between locating or none-locating trusted adapter
> factories because the permission of the <adapter..-directive. is not
> asserted.
Sorry, I don't see this.
> Given the above precedence fact, I cannot imagine a way how to resolve
> your (Jim's) requirement
> 'trusted-public-adapters-should-not-be-location-proxied' and the
> requirement within a local authentication any permission unless
> zope.Public does require location-ness.
>
> For that reason I sugest to stay with the current implementation of the
> branch (30225) and cancel the locate-extension.
I think the current proposal is:
1. provide an explicit locate attribute. This should be steaightforard.
2. if a non-public permission was specified, then behave as if a locate
attribute was used. This seems straightforward too.
I don't see what the problem is.
Jim
--
Jim Fulton mailto:jim at zope.com Python Powered!
CTO (540) 361-1714 http://www.python.org
Zope Corporation http://www.zope.com http://www.zope.org
More information about the Zope3-dev
mailing list