eggification
[GroupUserFolder.git] / Products / GroupUserFolder / README.txt
diff --git a/Products/GroupUserFolder/README.txt b/Products/GroupUserFolder/README.txt
new file mode 100644 (file)
index 0000000..bf9168a
--- /dev/null
@@ -0,0 +1,118 @@
+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.
+