Why not actually fix the problem instead of adding unexpected implicit
behavior?
Proposal:
pseudocode for "is a user in a group":
if the group name is XWikiAllGroup and XAG is configured as virtual
and the user is local,
then return true
otherwise, check the standard way, with the object attached to
document verification
The fact that XWikiAllGroup is configured as virtual doesn't mean that
it suddenly becomes an intangible document.
On 01/21/2014 01:52 PM, Denis Gervalle wrote:
Hi Guillaume,
I am definitely -1 to systematically replace XWikiAllGroup by
XWikiMemberGroup in any subwiki:
1) because I do not see the meaning of XWikiMemberGroup in the
myxwiki.orguse case.
2) because XWikiAllGroup is an habits for many existing user
3) because existing application/extension/scripts may attribute rights to
XWikiAllGroup
4) because this could cause confusion if some right are attributed to
XWikiAllGroup and others to XWikiMemberGroup, by a mixup of old and new
habits.
Since we definitely want to use implicit XWikiAllGroup, I do understand
that you need a solution for workspace that may be joined by global users.
The below proposal should allow you to do so without migrating existing
installation. It apply only to subwikis.
After thinking about the different possibilities, my best bet to a smooth
migration is to keep XWikiAllGroup for its previous meaning: "All
authenticated users having access to this wiki" (unless implicit, which
restrict it currently to "All Local Users"). Keeping the meaning and
potential usage of the group is the key IMO.
To support selected global users to enter the implicit XWikiAllGroup, I
simply suggest to add implicitly a group as a member of XWikiAllGroup. It
could be called XWikiGlobalMemberGroup to be more explicit, and always be a
member of the implicit XWikiAllGroup when
xwiki.authentication.group.allgroupimplicit=2.
Then:
A) when xwiki.authentication.group.allgroupimplicit=0, and XWikiAllGroup
(not implicit) does not have a member XWikiGlobalMemberGroup. Do not do any
migration, and keep the current join behavior, using exclusively
XWikiAllGroup for both local and global users.
B) when xwiki.authentication.group.allgroupimplicit=1, keep the existing
behavior, obviously prevent any global user to join, do not provide global
user scope in wiki creation, and warn on the wiki setting if the user scope
is incompatible with the current implicit setting.
C) when xwiki.authentication.group.allgroupimplicit=2, check at startup
that a XWikiGlobalMemberGroup exists, else create it and migrate any global
users in XWikiAllGroup to XWikiGlobalMemberGroup.
D) when xwiki.authentication.group.allgroupimplicit=2, or when
xwiki.authentication.group.allgroupimplicit=0 and XWikiAllGroup contains
XWikiGlobalMemberGroup, use the new behavior, allowing creation of all user
scopes, removing any warnings, joining global users to the
XWikiGlobalMemberGroup (and local users to the XWikiAllGroups if not
implicit).
The net benefit of the above proposal is to keep actual habits and existing
use cases untouched. Moreover, the security is ensured to be kept as it is
with no risk of side effect, which is priority.
WDTH ?
Obviously, my +1 for the above proposal.
Thanks,
On Tue, Jan 21, 2014 at 6:50 PM, Guillaume "Louis-Marie" Delhumeau <
gdelhumeau(a)xwiki.com> wrote:
> 2014/1/21 Guillaume "Louis-Marie" Delhumeau <gdelhumeau(a)xwiki.com>
>
>> Just to add some precisions:
>>
>> = What the migrator do =
>> 1. Create a group XWikiMemberGroup, with XWikiAllGroup as the first
> member.
>> 2. All global users of XWikiAllGroup are put inside XWikiMemberGroup and
>> removed from XWikiAllGroup.
>> 3. All rights concerning XWikiAllGroup are changed (ex: "view for
>> XWikiAllGroup" -> "view for XWikiMemberGroup"). It does not
break
> anything
>> since XWikiAllGroup is a member of XWikiMemberGroup.
>> 4. All candidacies (ie: join requests, etc...) are moved form
>> XWikiAllGroup to XWikiMemberGroup, to be consistent.
>>
>
> Of course, this migration is only done on subwikis.
>
>
>>
>>
>>
>>
>> 2014/1/21 Guillaume "Louis-Marie" Delhumeau
<gdelhumeau(a)xwiki.com>
>>
>>> Sergiu:
>>> Exactly, I don't have to have all global users in the this group. Only
>>> those who are considered as "members" (ie: they have joined the
wiki).
>>>
>>>
>>> 2014/1/21 Sergiu Dumitriu <sergiu(a)xwiki.com>
>>>
>>>> Why not make virtual XWikiAllGroup also contain global users?
>>>>
>>>> We can make:
>>>>
>>>> xwiki.authentication.group.allgroupimplicit=0 -> no
>>>> xwiki.authentication.group.allgroupimplicit=1 -> yes, all local users
>>>> xwiki.authentication.group.allgroupimplicit=2 -> yes, local and
global
>>>>
>>>> Or do you want to have only some global users, not all of them?
>>>>
>>>> On 01/21/2014 11:31 AM, Guillaume "Louis-Marie" Delhumeau
wrote:
>>>>> Hi developers!
>>>>>
>>>>> In Workspaces, we used to add global users in the XWikiAllGroup page
>>>> of a
>>>>> subwiki to indicate that they are members of that wiki.
>>>>>
>>>>> Now, we have an option called "user scope", and we can have
both
>>>> global &
>>>>> local users in a subwiki. That means we have global & local users
in
>>>>> XWikiAllGroup.
>>>>>
>>>>> Then, it is a problem because it can not work when XWikiAllGroup is
a
>>>>> virtual group [1].
>>>>>
>>>>> Then, I have proposed to create a new group, called
XWikiMemberGroup,
>>>> that
>>>>> hold the members of the subwiki. (Note: XWikiAllGroup will be a
> member
>>>> of
>>>>> XWikiMemberGroup, in order to say "a local user is a
member").
>>>>>
>>>>> So, I have written a migration (again!) [2], to create the new group
>>>> with
>>>>> the current content of XWikiAllGroup. In this migration, I also
>>>> changes all
>>>>> existing rights that occur on XWikiAllGroup to make them effective
> for
>>>>> XWikiMemberGroup. I did not want to duplicate these rights by just
>>>> adding
>>>>> the sames for XWikiMemberGroup. I think it is easier for the user to
>>>> only
>>>>> take care of the XWikiMemberGroup. But it looks a bit
"magical", and
>>>> some
>>>>> people don't like it.
>>>>>
>>>>> I would like to have your opinion.
>>>>>
>>>>> +1 for adding XWikiMemberGroup and to "migrate" rights
(replace all
>>>> rights
>>>>> given to XWikiAllGroup by rights given to XWikiMemberGroup).
>>>>>
>>>>> Thanks,
>>>>> Louis-Marie
>>>>>
>>>>>
>>>>> [1]
http://jira.xwiki.org/browse/XWIKI-9886 - Enabling virtual
>>>>> XWikiAllGroup breaks wiki membership
>>>>> [2]
>>>>
https://github.com/xwiki/xwiki-platform/compare/feature-wiki-members -
>>>>> Git branch for this proposal