GroupUserFolder (c)2002-03-04 Ingeniweb (This is a structured-text formated file) ABSTRACT GroupUserFolder is a kind of user folder that provides a special kind of user management. Some users are "flagged" as GROUP and then normal users will be able to belong to one or serveral groups. See http://ingeniweb.sourceforge.net/Products/GroupUserFolder for detailed information. DOWNLOAD See http://sourceforge.net/project/showfiles.php?group_id=55262&package_id=81576 STRUCTURE Group and "normal" User management is distinct. Here's a typical GroupUserFolder hierarchy:: - acl_users (GroupUserFolder) | |-- Users (GroupUserFolder-related class) | | | |-- acl_users (UserFolder or derived class) | |-- Groups (GroupUserFolder-related class) | | | |-- acl_users (UserFolder or derived class) So, INSIDE the GroupUserFolder (or GRUF), there are 2 acl_users : - The one in the 'Users' object manages real users - The one in the 'Groups' object manages groups The two acl_users are completely independants. They can even be of different kinds. For example, a Zope UserFolder for Groups management and an LDAPUserFolder for Users management. Inside the "Users" acl_users, groups are seen as ROLES (that's what we call "groles") so that roles can be assigned to users using the same storage as regular users. Groups are prefixed by "group " so that they could be easily recognized within roles. Then, on the top GroupUserFolder, groups and roles both are seen as users, and users have their normal behaviour (ie. "groles" are not shown), except that users affected to one or several groups have their roles extended with the roles affected to the groups they belong to. Just for information : one user can belong to zero, one or more groups. One group can have zero, one or more users affected. [2003-05-10] There's currently no way to get a list of all users belonging to a particular group. GROUPS BEHAVIOUR ...will be documented soon... GRUF AND PLONE See the dedicated README-Plone file. GRUF AND SimpleUserFolder You might think there is a bug using GRUF with SimpleUserFolder (but there's not): if you create a SimpleUserFolder within a GRUF a try to see it from the ZMI, you will get an InfiniteRecursionError. That's because SimpleUserFolder tries to fetch a getUserNames() method and finds GRUF's one, which tries to call SimpleUserFolder's one which tries to fetch a getUserNames() method and finds GRUF's one, which tries to call SimpleUserFolder's one which tries to fetch a getUserNames() method and finds GRUF's one, which tries to call SimpleUserFolder's one which tries to fetch a getUserNames() method and finds GRUF's one, which tries to call SimpleUserFolder's one which tries to fetch a getUserNames() method and finds GRUF's one, which tries to call SimpleUserFolder's one which tries to fetch a getUserNames() method and finds GRUF's one, which tries to call SimpleUserFolder's one which tries (see what I mean ?) To avoid this, just create a new_getUserNames() object (according to SimpleUserFolder specification) in the folder where you put your SimpleUserFolder in (ie. one of 'Users' or 'Groups' folders). GRUF also implies that the SimpleUserFolder methods you create are defined in the 'Users' or 'Groups' folder. If you define them above in the ZODB hierarchy, they will never be acquired and GRUF ones will be catched instead, causing infinite recursions. GRUF AND LDAPUserFolder [NEW IN 3.0 VERSION: PLEASE READ README-LDAP.stx INSTEAD] BUGS There is a bug using GRUF with Zope 2.5 and Plone 1.0Beta3 : when trying to join the plone site as a new user, there is a Zope error "Unable to unpickle object"... I don't know how to fix that now. With Zope 2.6 there is no such bug. DEBUG If you put a file named 'debug.txt' in your GRUF's product directory, it will switch the product in debug mode next time you restart Zope. This is the common behaviour for all Ingeniweb products. Debug mode is normally just a way of printing more things on the console. But, with GRUF, debug mode (since 3.1 version) enables a basic user source integrity check. If you've got a broken user folder product on your hard drive that you use as a source with GRUF, it will allow you to unlock the situation. LICENCE GRUF > 2 is released under the terms of the Zope Public Licence (ZPL). Specific arrangements can be found for closed-source projects : please contact us.