[Zope-dev] Using LoginManager with users stored in several Specialists

Ty Sarna tsarna@endicor.com
24 Oct 2000 15:24:58 GMT


In article <a05001900b61b0b6ac87c@[10.0.1.2]>,
Itai Tavor  <itai@optusnet.com.au> wrote:
> - I'm not sure how to customize a UserSource to access the 
> propertysheets on the Customer and Reseller classes. The easiest way 
> seems to be to define userExists, userRoles and userAuthenticate 
> methods in a GenericUserSource, but I don't think it's a good idea - 
> I still wouldn't know how to make changes to the propertysheet from 
> the LoginManager (for example, changePassword should be a method of 
> acl_users, not of the user classes, because it does the same thing 
> for all user types), and there is no caching. Should I write my own 
> UserSource? Or can I do it with Data Plug-ins? I'd like to keep the 
> solution simple, but I do want it to be efficient (fast and cached).

Generic User Source is basically for people who are familar with GUF and
want some degree of backward compatability. There was also a time where
it was the only choice :-)

Now there is "User Source", which is to LoginManager what Rack is to
Specialist. It's completely general, defaulting to storing things
persistently, but overrideable with SkinScript and the "load from
existence of attribute blah" to do anything you want. It's much more
Generic than Generic User Source, actually :)

Have a look at the SkinScript reference for the "Object Remapping"
example (last one under WITH ...  COMPUTE ...) of how to make a Rack
that retrieves proxyies for objects from a different Specialist. You
can direcly apply this same technique to have a User Source provide
users based on objects in other Specialists.