hi,
I'm trying to get the Zope zen when it comes to zSql methods and a custom user folder. I've got a Win32 application that I'm trying to evolve into a combination of WebObjects and Zope applications. I'm hoping to share an authentication mechanism/scheme between the 3 applications. The current Win32 app uses a combination of database protection and a custom "license" mechanism to enable/disable application features based on a user's role. I need to replicate this functionality in Zope.
I would like to have a user folder that authenticates a user based on a combination of database password (i.e., like the username and password that the zODBCDA connection uses for the connection string) and a custom users table (if the user gets that far), and a license file product that sits in the custom user folder and provides role information. I've looked at LoginManager and UserDB and don't know which one to start with, or even if either of them is an appropriate launch point.
Hi Chris, my first idea would be to create the database connections when the user is created, i.e. in a special per-user folder and hardwire the db-login and passwd in the database connection. In the folder above I would use LoginManager (don't know about UserDB, though). LoginManager has a method which is called userAuthenticate which returns true (or 1) if the user is authenticated. Use that for checking your users against any datasource you like, for instance <dtml-in "SQL_get_password(username=username)"> <dtml-if "_.crypt(password,_['sequence-item'].real_password)==_['sequence-item'].real_password"> <dtml-return "_.int('1')"> </dtml-if> </dtml-in> for checking against crypted passwords in an external database. Theres also a Method called userRoles which returns a list of the roles the users has. This could check your license files with the help of an external method in order to return the appropriate roles which then could be used in zope with custom roles. cheers, oliver
participants (1)
-
Oliver Bleutgen