[Grok-dev] Re: How do I check permissions on a view?
Philipp von Weitershausen
philipp at weitershausen.de
Mon Sep 24 12:33:15 EDT 2007
Martijn Faassen wrote:
> Sebastian Ware wrote:
>> To check permissions on an object I can use...
>>
>> zope.security.canAccess
>> zope.security.canWrite
>>
>> ...is there a similar way of checking if the current principal may
>> access a given view? Maybe using the URL?
>
> You can explicitly check permissions like this:
>
> from zope.security.management import getInteraction
> interaction = getInteraction()
> interaction.checkPermission('mypermission', object):
Or just use
zope.security.checkPermission(perm, obj)
which hides all this interaction business away.
Either way, I think this is only half the solution to Sebastian's
problem. If he wants to separate concerns, then he shouldn't make his
code have to know about the required permission. It should just work
with whichever permission was set on the view. This is what canAccess does:
zope.security.canAccess(view, '__call__')
It will look up which permission is required for accessing view.__call__
and then check if the user has the permission.
--
http://worldcookery.com -- Professional Zope documentation and training
More information about the Grok-dev
mailing list