What would you change on the security tab?  I still want my authenticated users 
to have access to the method as a call to it is made from unrestricted space 
(such as a page template), I just don't want them to call the method directly.

----- Original Message ----
From: Jaroslav Lukesh <luk...@seznam.cz>
To: zope@zope.org; Tres Seaver <tsea...@palladion.com>
Sent: Tuesday, April 28, 2009 8:50:29 AM
Subject: Re: [Zope] how to prevent URL access to an external method?

Why? It is more transparent and better way - use security tab.

----- Original Message ----- 
From: "Tres Seaver" <tsea...@palladion.com>

> Hash: SHA1
> Pedro LaWrench wrote:
>> I need to do something on the filesystem, which requires unrestricted
>> python, so I created an external method. The problem is that anyone
>> can call that directly via URL, so I added a permission check. Even
>> then, users with the sufficient permissions can call this via URL,
>> which I don't want them to do. I only want them to have access
>> indirectly from other pages (such as a page template that will pass
>> sane parameters). Is there anyway to do this?
> Add a REQUEST argument to your function, defaulting to None.  The
> publisher will always pass the request in for that argument, while the
> other templates / scripts should not.  E.g.:
> def doSomething(self, REQUEST=None):
>    """ Don't call me directly via a URL!!!
>    """
>    if REQUEST is not None:
>        raise ValueError('Wicked, evil, naughty Zoot!')

Zope maillist  -  Zope@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - 
http://mail.zope.org/mailman/listinfo/zope-dev )

Zope maillist  -  Zope@zope.org
**   No cross posts or HTML encoding!  **
(Related lists - 
 http://mail.zope.org/mailman/listinfo/zope-dev )

Reply via email to