[Zope3-dev] View permissions

Jim Fulton jim at zope.com
Mon Jan 22 17:46:48 EST 2007


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.

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.

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