# GRUF - GroupUserFolder

› A groups management tool for Zope ‹

What's GRUF ? | How does it work ? | Is it compatible with... | Download | Screenshots | FAQ | Links | Contact

What's GRUF ?

GRUF is a convenient tool to manage groups of users within Zope.

It works as a frontend between a Zope application relying on a UserFolder and a set of two regular UserFolders : one will store the users and the other one will store the groups.

It has a whole bunch of cool features, especially :

- It doesn't patch anything in Zope ;
- It integrates smoothly without the need of any additional form (some are provided but it's only for convenience) ;
- It doesn't store users by itself but delegates that job to another User Folder. So, it works with virtually ANY Zope UserFolder in there ! (especially standard acl_users but also LDAPUserFolder, SimpleUserFolder, ...) ;
- It supports groups nesting (ie. groups can belong to other groups and 'inherit' their roles
- It allows groups and users to be stored in a separated backend (eg. groups in ZODB and users in LDAP, ...);
- It supports (since 2.0 version) multiple user sources, ie. you can have a bunch of users in LDAP plus some users in a standard User Folder, and they all will be integrated to GRUF;
- It provides clean management screens (including user and groups editing interfaces) ;
- It provides security auditing tools ;
- It's compatible with regular Zope UserFolder API ;
- Groups are seen as regular Zope users in applications that doesn't include groups support. Thus, you don't have to rewrite anything to gain benefit from GRUF's groups !

GRUF has been designed by the Ingeniweb team.

And, of course, it's Open-Source (GPL licence for versions < 2.0, ZPL licence otherwise).

How does-it work ?

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.

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.

Is it compatible with...

- CMF ? Yes.
- Plone ? Yes. There are even additional forms and tools for Zope to gain full benefit of group information. But these are completely optional and Plone can work without. GRUF will be integrated to Plone 1.1
- Zope standalone ? Yes (Zope >= 2.5) and it's a major requirement for us. GRUF will always work with existing Zope 2.x (> 2.5), without the need to add, patch, modify or do anything to make it work.
- My existing Zope application ? Yes, provided you do not use non-official security functions. GRUF is completely transparent.
- LDAPUserFolder ? Yes, with groups beeing stored in LDAP database or not. Users adding is not supported now because LDAPUF doesn't comply with standard Zope security API for this part. It is, however, possible to come around this, but it needs a little coding (some volounteers ? :-))
- ExUserFolder ? Yes, except for GRUF 1.3 version. GRUF 1.31 is reported to work again with XUF.
- SimpleUserFolder ? Yes.
- My coffee machine ? Not yet, but we're actively working on it !

Download

GRUF is shipped as a tarball for Zope. See The Collective Project for more information.
And don't forget that even if GRUF is hosted by a Plone-related project, GRUF independent from Plone !

## Upward / Backward compatibility

All GRUF versions are backward compatible, and then doesn't require you to do anything to upgrade.

All GRUF versions within the same major number are upward compatible, that is to say that you can replace your version by a previous one without loosing your user data. This is false for versions having a different major number (O.x and 1.x for example).
So, if you notice a bug in the newest version, you can always decide to get back in time ! :-)

## Official releases

Releases are now hosted by SourceForge. The latest release can always be found here.

- 2.0 (2004-03-02): Plone2 bugfixes, minor bugfixes, performance increase by Helge Tesdal, moved GroupSpaces support to another product
- 2.0Beta3 (2004-02-24): Plone2 bugfixes, minor bugfixes, performance increase with LDAPUserFolder
- 2.0Beta2 (2003-12-22): GroupSpaces support, Plone2 support, cosmetic ZMI improvements, minor bugfixes
- 2.0Beta1 (2003-10-23): Supports multiple user sources, cosmetic ZMI improvements
- 1.32 (2003-09): Non-official utility release (Plone-related tools improvements)
- 1.31 (2003-07-29): Major speed improvements, cosmetic ZMI improvements
- 1.3 (2003-07-23): Implemented nested groups feature, major ZMI improvements
- 1.21 (2003-07-10): Fix in LDAPUserFolder attributes retreiving and cosmetic fixes on ZMI
- 1.2 (2003-07-10): Major ZMI enhancing and GRUF API improvements
- 1.1 (2003-07-02): Includes major security fixes, an useful audit tab, and two "groupship" tools for Plone
- 1.0RC1 (2003-05-14): Code cleaning, better documentation and UI (and Plone skins) improves
- 0.2 (2003-03-31): Fixed user acquisition trick (no more hotfixing), minor API update to comply with LDAPUF and SimpleUF
- 0.1 (2002-11-26): First attempt to show that this product can work !

## CVS

You can checkout the CVS anonymously with the following commands:

    cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/collective login
    cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/collective co GroupUserFolder

You can browse CVS at Sourceforge.

Screenshots

Here comes a few screenshots of GRUF administration interface. Click an image to enlarge.

The way GRUF shows-up in the ZMI | The way GRUF shows-up in the ZMI (continued) You can now see users and groups defined within GRUF, and click them individually.
A quick overview page with many users | The groups management interface
The users management interface | Individual group edition
A security audit results page | The multiple sources view

Frequently Asked Questions

- Can I nest some GRUFs ?
  Maybe... but what for ?
- Does GRUF support nested groups ?
  Nested groups in group-whithin-a-group feature.
  And, yes, GRUF supports it since 1.3 version.
- Does GRUF support multiple user sources ?
  Multiple user sources is a feature that would allow you to store users in several userfolders. For example, you could have your regular admin users in a standard User Folder, your intranet users in an LDAPUserFolder and your extranet users in an SQL-based user folder
  GRUF supports this from version 2.0Beta1.
- Can I use GRUF outside Plone ?
  Yes, yes, yes, yes and yes. This is a major design consideration for us.
- Is GRUF stable ?
  It's used in a production environment for several major websites. Furthermore, it's qualified to be included in Plone 1.1. It's considered reliable enough - except for "Beta" versions, of course.
- Is GRUF maintained ?
  Yes, it is, actively. Features (especially regarding useablility) are often added to GRUF. Official releases are considered very stable.
- Can I help ?
  Yes, for sure !
  GRUF is an Open-Source project and we, at Ingeniweb, are always happy to help people getting involved with our products. Just contact us to submit your ideas, patches or insults ! :-)
  In any case, if you want to work on GRUF's CVS, please work in a branch, never on the HEAD!
  I want this to ensure the latest CVS HEAD is always very stable.

Links

Here are some links of interest regarding GRUF or other assorted tools.

- This document on the web;
- GRUF API Documentation (using APIDoc);
- The collective project download page to keep up-to-date with latest GRUF releases;
- README.txt: the GRUF README file
- README-Plone.stx: the GRUF-Plone README file
- CHANGES: the top-level changes file
- ChangeLog: the ChangeLog file, auto-generated from cvs

Contact

There are some ways to have contact/support on GRUF.

- Ingeniweb help mailing list
- Ingeniweb support

Last modified: Tue Feb 24 11:02:53 2004