fix bug: RNRS-exempted users wrongly added to $wgRNRSConfirmedGroup
这个提交包含在:
父节点
40f16350a2
当前提交
1cdf1803cf
|
@ -86,8 +86,8 @@ class PermissionsHook implements
|
|||
{
|
||||
// Mode2: has right to exempt from verification
|
||||
$rnrsverified_mode2 = (
|
||||
$this->permissionManager->userHasRight($user, 'rnrsverify-confirmed') ||
|
||||
$this->permissionManager->userHasRight($user, 'rnrsverify-exempt')
|
||||
$this->permissionManager->userHasRight($user, $this->config->get('RNRSConfirmedGroup')) ||
|
||||
$this->permissionManager->userHasRight($user, $this->config->get('RNRSExemptGroup'))
|
||||
);
|
||||
|
||||
if ($rnrsverified_mode2) {
|
||||
|
@ -137,24 +137,54 @@ class PermissionsHook implements
|
|||
$this->userGroupManager->listAllGroups()
|
||||
)
|
||||
);
|
||||
$rnrsverified_enabled_exempt_group = in_array(
|
||||
$this->config->get('RNRSExemptGroup'),
|
||||
array_merge(
|
||||
$this->userGroupManager->listAllImplicitGroups(),
|
||||
$this->userGroupManager->listAllGroups()
|
||||
)
|
||||
);
|
||||
|
||||
if (
|
||||
!$this->config->has('RNRSExclusiveRights') ||
|
||||
!$this->config->has('RNRSSalt')
|
||||
) {
|
||||
return true;
|
||||
} else if ($rnrsverified_mode1 || $rnrsverified_mode2 || $rnrsverified_mode3) {
|
||||
} else if (($rnrsverified_mode1 || $rnrsverified_mode2) && $rnrsverified_mode3) {
|
||||
// case 1: verified and exempted (bugfix)
|
||||
if (
|
||||
$rnrsverified_enabled_confirmed_group && $rnrsverified_enabled_exempt_group &&
|
||||
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
|
||||
) {
|
||||
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSExemptGroup'));
|
||||
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
|
||||
}
|
||||
return true;
|
||||
} else if (($rnrsverified_mode1 || $rnrsverified_mode2) && !$rnrsverified_mode3) {
|
||||
// case 2: verified but not exempted
|
||||
if (
|
||||
$rnrsverified_enabled_confirmed_group &&
|
||||
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
|
||||
) {
|
||||
$this->userGroupManager->addUserToGroup($user, 'rnrsverify-confirmed');
|
||||
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
|
||||
}
|
||||
return true;
|
||||
} else if (
|
||||
!$rnrsverified_mode1 && !$rnrsverified_mode2 && !$rnrsverified_mode3 &&
|
||||
!($rnrsverified_mode1 || $rnrsverified_mode2) && $rnrsverified_mode3
|
||||
) {
|
||||
// case 3: exempted but not verified
|
||||
if (
|
||||
$rnrsverified_enabled_confirmed_group &&
|
||||
in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
|
||||
) {
|
||||
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSConfirmedGroup'));
|
||||
}
|
||||
return true;
|
||||
} else if (
|
||||
!($rnrsverified_mode1 || $rnrsverified_mode2) && !$rnrsverified_mode3 &&
|
||||
in_array($action, $this->config->get('RNRSExclusiveRights'))
|
||||
) {
|
||||
// case 4: not exempted and not verified
|
||||
$result = 'rnrshook-action-restricted';
|
||||
return false;
|
||||
};
|
||||
|
@ -179,13 +209,40 @@ class PermissionsHook implements
|
|||
$this->userGroupManager->listAllGroups()
|
||||
)
|
||||
);
|
||||
$rnrsverified_enabled_exempt_group = in_array(
|
||||
$this->config->get('RNRSExemptGroup'),
|
||||
array_merge(
|
||||
$this->userGroupManager->listAllImplicitGroups(),
|
||||
$this->userGroupManager->listAllGroups()
|
||||
)
|
||||
);
|
||||
|
||||
if ($rnrsverified_mode1 || $rnrsverified_mode2 || $rnrsverified_mode3) {
|
||||
if (($rnrsverified_mode1 || $rnrsverified_mode2) && $rnrsverified_mode3) {
|
||||
// case 1: verified and exempted (bugfix)
|
||||
if (
|
||||
$rnrsverified_enabled_confirmed_group && $rnrsverified_enabled_exempt_group &&
|
||||
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
|
||||
) {
|
||||
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSExemptGroup'));
|
||||
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
|
||||
}
|
||||
} else if (($rnrsverified_mode1 || $rnrsverified_mode2) && !$rnrsverified_mode3) {
|
||||
// case 2: verified but not exempted
|
||||
if (
|
||||
$rnrsverified_enabled_confirmed_group &&
|
||||
!in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
|
||||
) {
|
||||
$this->userGroupManager->addUserToGroup($user, 'rnrsverify-confirmed');
|
||||
$this->userGroupManager->addUserToGroup($user, $this->config->get('RNRSConfirmedGroup'));
|
||||
}
|
||||
} else if (
|
||||
!($rnrsverified_mode1 || $rnrsverified_mode2) && $rnrsverified_mode3
|
||||
) {
|
||||
// case 3: exempted but not verified
|
||||
if (
|
||||
$rnrsverified_enabled_confirmed_group &&
|
||||
in_array($this->config->get('RNRSConfirmedGroup'), $this->permissionManager->getUserPermissions($user))
|
||||
) {
|
||||
$this->userGroupManager->removeUserFromGroup($user, $this->config->get('RNRSConfirmedGroup'));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
正在加载...
在新工单中引用