[horde] Group permissions model

Richard Wallace rwallace at thewallacepack.net
Tue Oct 19 13:25:08 PDT 2004


Hey all,

I'm trying to map our clients organizational structure to the Horde 
group model.  The way the Horde model works is that permissions flow 
down.  But in an organizations structure permissions typically don't do 
that and I'm having a problem mapping the one to the other in a logical, 
manageable fashion.

Here's the basic structure (forgive the ascii art):

+ Company 1
|
--+ Devs
| |
| --- DEs
|
--+ Pubs
| |
| --+ Pub1
| | |
| | --+ AEs
| |   |
| |   ---EAs
| |
| --+ Pub2
|   |
|   --+ AEs
|     |
|     ---EAs
|
--+ Marketing
| |
| -- MM
|
--+ Sales
   |
   --+ Regional manager 1
   | |
   | --+ District manager 1
   | | |
   | | --- Reps
   | |
   | --+ District manager 2
   |   |
   |   --- Reps
   |
   --+ Regional manager 1
     |
     --+ District manager 1
     | |
     | --- Reps
     |
     --+ District manager 2
       |
       --- Reps

So the high level group is the "Company".  People that are members of 
this group are like executives and they should be able to see all things 
belonging to all groups.  For each level down the persons 
responsibility, and therefore access rights, diminishes within the 
organization.

This is the opposite of the way the Horde group permission inheritance 
works, where the child gets the access permissions of the parent and may 
have more added on.  Instead, the top level group should have all the 
rights of its children.  Representing this in Horde wouldn't be a 
problem if a group could have multiple parents, then we could literally 
just flip the above tree upside down and that would be that.

Has anybody run into this problem before?  I understand the way the 
Horde group stuff is modeled from an implementation point of view.  It's 
much easier to start at a node and visit each of it's parents gathering 
permissions that to try and recurse a tree from the top to get the 
permissions.  But most users don't think that way.  Most organizations 
will be organized the way I have outlined above, where the top guy gets 
the most access.

I've thought about a variety of ways to handle this.  The two best were 
1) create a layer on top of the group system that handles mapping 
between the two different models, but this would get pretty hairy really 
quick, and 2) just flattening out the groups and programatically 
managing the relationships, which also seems like it would be an ugly mess.

So what do you guys think?

Thanks,
Rich



More information about the horde mailing list