[dev] [commits] Horde branch H4-Group updated. 840392473461fdde7040004a26bceac2a3cc3dcf
Michael Rubinsky
mrubinsk at horde.org
Sun Mar 6 17:54:54 UTC 2011
Quoting Jan Schneider <jan at horde.org>:
> Zitat von Michael Rubinsky <mrubinsk at horde.org>:
>
>>
>> Quoting Jan Schneider <jan at horde.org>:
>>
>> <snip>
>>
>>> commit a45e4bb5980601ebeea3c3231e0f1afac9fcb944
>>> Author: Jan Schneider <jan at horde.org>
>>> Date: Sat Mar 5 18:04:12 2011 +0100
>>>
>>> Tweaks and fixes to the contact group API.
>>>
>>> Michael, can we drop listUserGroupObjects(), because this seems
>>> to provide the
>>> same functionality like getGroupMemberships()?
>>
>>
>> getGroupMemberships() returns a list group id => group names that
>> the current user is a *member* of (useful for checking if a user
>> has permissions on a resource to which the group has permissions
>> to), while listUserGroupObjects() returns an array of turba lists
>> that the current user has Horde_Perms::SHOW on, to be used e.g, in
>> listing the groups the user has available for assigning permissions
>> to his/her resources. In other words, User "A" can be a member of
>> User B's contact list, but not have permissions to User B's list
>> (so should not be able to use User B's list to assign permissions
>> to one of User A's resources).
>
> Hm, that doesn't align at all with the general group API (and how we
> use it in application, if I didn't miss anything), because there is
> only the destinction between listing *all* groups and only the
> groups the user is a member of.
>
> With that approach we need to consider different group lists for
> permission checking and permission assignment. How did that ever
> work in the past? :) Ah, I guess because we had
> userIsMemberOfGroup() (or some such), which has been dropped in the
> rewrite.
I'll have to take a closer look at the new code when I can, but, with
the contactList driver, it doesn't make much sense to me to return
groups based on contact lists that the current user doesn't even have
access to. That is what the listUserGroupObjects() method call does -
it only returns lists the user can actually see. When User A is
assigning group permissions to User A's resources, how is he supposed
to know what users belong in some group that he doesn't have
permissions enough to see? Not to mention, for an installation like
SAPO's, that would lead to some seriously large group lists.
With the cursory glance I took at the new API, I don't see why the
this won't work. The contactList driver could use the results of
listUserGroupObjects() in Horde_Group::listAll(). This result will
only contain lists the user can see. When *checking* perms we don't
care about all existing groups, we only care about groups that the
user is a member of (Horde_Group::listGroups()), so this check should
also work as expected. As we discussed when developing this driver, it
was never designed to provide access to ALL contact lists to ALL
users. It was designed to allow one user to assign permissions to his
resources based on that user's groups, not every user's groups.
Of course, I could very well be missing something :)
> Jan.
>
> --
> Do you need professional PHP or Horde consulting?
> http://horde.org/consulting/
>
> --
> Horde developers mailing list
> Frequently Asked Questions: http://horde.org/faq/
> To unsubscribe, mail: dev-unsubscribe at lists.horde.org
mike
The Horde Project (www.horde.org)
mrubinsk at horde.org
More information about the dev
mailing list