[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