[dev] Horde Perms

Ralf Lang lang at b1-systems.de
Sun Aug 14 07:38:16 UTC 2011


Am Sonntag, 14. August 2011, 04:00:42 schrieb Gonçalo Queirós:
> On 08/13/2011 02:44 PM, Jan Schneider wrote:
> > Zitat von goncalo.queiros at portugalmail.net:
> >> Hi there.
> >> 
> >>  Started to dedicate some attention to Horde Perms, and there seems
> >> 
> >> to be
> >> 
> >> some odd behaviors with it:
> >>  - If i give to user A permission to kronolith:max_events = 2, he
> >> 
> >> will be
> >> able to create only 2 events, but every other user won't be able to
> >> create
> >> any event.
> >> 
> >>  I then give all authenticated users permission to create 5 events,
> >> 
> >> and my
> >> user A will now be able to create 5 events too. Digging the code i
> >> saw that
> >> Horde_Perms just returns to Kronolith an array('2', '5'), and then
> >> Kronolith uses the max of the array.
> >> 
> >>  As a user pointed on the IRC, i could add all users to a group, give
> >> 
> >> that
> >> group permissions to create 5 events, and give user A permission to
> >> create
> >> 2. While this would probably fix the problem, it doesn't seem right
> >> because
> >> every time a user registers i would need to add him to this group.
> > 
> > There's nothing odd about this. Permissions are additive. You cannot
> > further restrict permissions that a user gained by other permissions.
> 
> Sorry, but i don't understand how does it make sense. If I deny a
> permission to a specific user, im also obliged to allow the permission
> to all access users (otherwise, none will have it), and since they are
> additive, it actually doesn't matter what i set to the specific user.
> Currently you can't deny access to one user to an application, and still
> allow all authenticated users to access it..

Yes. You do not "deny" access or thresholds but "allow" it on several levels. 
If the permission exists, it's denied by default. If not, just the other way 
around. I think it was that way back in H3. For denial, a simple checkbox 
would not be enough. You needed to mark if you mean "go with higher level 
settings" or "explicitly deny". This whole thing would get messy with 
countable permissions - You would need to indicate if a number may be 
overriden but this doesn't work. Nobody prevents you from marking two 
overlapping permissions as "don't override" or put users in groups they were 
not in before and so on. You could settle with "specific overrides general" 
but this still doesn't apply to all situations. In the end, you would mark 
every countable permission as either "no lower than this", "no higher than 
this" or "overridable default". Not only storage and calculation, also the UI 
needed to be different to allow the user overview all the implications of a 
permissions change on any level.

This all can really be circumvented by just putting all good guys in a 
"normal" group and the lesser users into a "I don't trust you guy" group and 
assign permissions on this level instead of "all authenticated". 

Though it would be handy if there was a setting "put new users into default 
group". Probably you could do this by a hook or through the signup form.

-- 
Ralf Lang
Linux Consultant / Developer

B1 Systems GmbH
Osterfeldstraße 7 / 85088 Vohburg / http://www.b1-systems.de
GF: Ralph Dehner / Unternehmenssitz: Vohburg / AG: Ingolstadt,HRB 3537


More information about the dev mailing list