User Groups

part of the ArsDigita Community System by Philip Greenspun and Michael Yoon

The Big Idea

There are many applications of the ArsDigita Community System in which we need to lump users together. If we accomplish that lumping with a common mechanism, then we can build common user and admin tools that don't have to be separately debugged for each installation.

Data Model Tour

These are the tables that hold user group information:

Creating User Groups

For each type of user group (i.e., row in the user_group_types table), you must choose an approval policy (stored, naturally, in the approval_policy column) to govern how groups of that type may be created, which must be one of: (If you find that you need to customize the group-new pages, Yahoo! Clubs and eGroups provide good examples of simple user interfaces for user group creation.)

System-defined Groups

There are a bunch of places within the ArsDigita Community System where users need to be lumped together. Sadly, some of these subsystems predate the users group module and use their own mapping tables.

An example of something done consistently, however, is the recording of whether or not a user is a system administrator of this site (tested with the Tcl procedure ad_administrator_p). There is a user group type of "administration". One group of this type is pre-defined: "Site-Wide Administration."

Example Applications

Cisco sets up an ArsDigita Community System to support customers who've purchased routers. Cisco would create a user group type of "company" and then a user group of that type for each customer, e.g., "Hewlett Packard" would be a user group and all the users would be members of that group. The grouping mechanism would let Cisco ask for "all trouble tickets opened by HP employees". The grouping mechanism would let Cisco offer online prices with the HP discount to anyone logged in who was recorded as a member of the HP group.

A university running one big ACS would have user group types of "committee" and "course". All the administrators on a committee would be in a user group of type "committeee". All the students and teachers in a particular course would be lumped together in a user group and could have a private discussion group. The teachers would have a different role within the user group and hence would have more access privileges.

Group login

More Information