[Zope3-Users] Run starup code with zope 3.

Dan Korostelev nadako at gmail.com
Thu Feb 12 12:32:32 EST 2009


2009/2/12 Thierry Florac <thierry.florac at onf.fr>:
> Le jeudi 12 février 2009 à 17:50 +0100, Sebastian Bartos a écrit :
>> I'm struggling with some Zope 3 startup code. I registered a user like
>> this for the Session Credentials plugin and login form stuff:
>>
>> ...
>>
>>     def create(self, data):
>>         site = getSite()
>>         sm = site.getSiteManager()
>>
>>         if sm.has_key('auth'):
>>             return "Site is already set up"
>>
>>         pau = Pluggableauth()
>>         sm['auth'] = pau
>>         sm.registerUtility(pau, Iauth)
>>         users = PrincipalFolder()
>>         sm['auth']['Users'] = users
>>         sm.registerUtility(users, IAuthenticatorPlugin, name="Users")
>>         pau.authenticatorPlugins = (users.__name__, )
>>         pau.credentialsPlugins = ("No Challenge if Authenticated",
>>                                   "Session Credentials")
>>
>>         user = InternalPrincipal("user", "foo", "user",
>>                                  passwordManagerName="SHA1")
>>         users["user"] = user
>>        principalPermissionManager.grantAllPermissionsToPrincipal("user")
>
>
> To run code automatically at application startup, I think that you
> should have a look at the IDatabaseOpenedWithRootEvent (defined in
> zope.app.appsetup.interfaces).
> I use this event to check a set of persistent database utilities at
> application startup, and it works fine.

Also, zope.securitypolicy provides a way to store location-based
grants. Just adapt your site object to IPrincipalRoleManager or to
IPrincipalPermissionManager (defined in zope.security.interfaces) and
use its methods to allow/deny roles/permissions to some principal ID.
It will handle the actual storing work. Child objects will inherit
parent's settings until they have their own local settings.

-- 
WBR, Dan Korostelev


More information about the Zope3-users mailing list