[Zope3-dev] Re: View permissions
Philipp von Weitershausen
philipp at weitershausen.de
Tue Jan 23 10:51:30 EST 2007
Jim Fulton wrote:
> Albertas Agejevas wrote:
>> Hi all,
>>
>> Unpleasant things happen when views are security wrapped. Widgets
>> refuse to work, because they are registered as views, and get a custom
>> secuity checker (in zope.app.component.metaconfigure.view). The
>> default view custom checker only protects '__call__', leaves all other
>> attributes forbidden. This makes rendering a label or errors of a widget
>> fail. Defining security permissions for the widget class does not
>> help as the custom checker overrides them.
>>
>> The TextWidget is registered in zope/app/form/browser/configure.zcml
>> as follows:
>>
>> <view
>> type="zope.publisher.interfaces.browser.IBrowserRequest"
>> for="zope.schema.interfaces.ITextLine"
>> provides="zope.app.form.interfaces.IInputWidget"
>> factory=".TextWidget"
>> permission="zope.Public"
>> />
>>
>> Gary Poster helped me find 3 ways to overcome the security wrapped
>> widget problem:
>>
>> 1. ZCML only fix: add allowed_interface="...ITextBrowserWidget" to the
>> text widget ZCML registration, and the relevant interfaces to all
>> other widgets (maybe just IInputWidget is enough).
>>
>> 2. Make the view custom permission checker merge permissions registered
>> for the view class with the permissions allowed by the view
>> registration.
>>
>> 3. Make the provided interface the default allowed interface.
>> Fall back on allowing just __call__ for the views that only
>> provide zope.interface.Interface.
>>
>> I feel that the last option is best.
I'm surprised it doesnt' do that already.
> Why not just use:
>
> <adapter
> for="zope.schema.interfaces.ITextLine
> zope.publisher.interfaces.browser.IBrowserRequest"
> provides="zope.app.form.interfaces.IInputWidget"
> factory=".TextWidget"
> permission="zope.Public"
> />
>
> That's what I would do.
>
> I might even hack the TextWidget so I could just do:
>
> <adapter
> factory=".TextWidget"
> permission="zope.Public"
> />
>
> I'd be happy to deprecate the view directive.
+1
--
http://worldcookery.com -- Professional Zope documentation and training
2nd edition of Web Component Development with Zope 3 is now shipping!
More information about the Zope3-dev
mailing list