- Модуль: intranet
- Путь к файлу: ~/bitrix/modules/intranet/lib/util.php
- Класс: BitrixIntranetUtil
- Вызов: Util::setAdminRights
static function setAdminRights($params)
{
$userId = (!empty($params['userId']) ? intval($params['userId']) : 0);
$currentUserId = (!empty($params['currentUserId']) ? intval($params['currentUserId']) : 0);
$isCurrentUserAdmin = !!$params['isCurrentUserAdmin'];
if (
$userId <= 0
|| $currentUserId <= 0
)
{
return false;
}
if (
!(
Loader::includeModule("bitrix24") && CBitrix24::isPortalAdmin($currentUserId)
|| $isCurrentUserAdmin
)
)
{
return false;
}
if (
Loader::includeModule("bitrix24")
&& BitrixBitrix24Integrator::isIntegrator($currentUserId)
)
{
return false;
}
$userData = BitrixMainUserTable::getList([
'select' => [ 'ID', 'UF_DEPARTMENT', 'ACTIVE' ],
'filter' => [
'=ID' => $userId
],
])->fetch();
if (
!is_array($userData['UF_DEPARTMENT']) // is extranet
|| empty($userData['UF_DEPARTMENT'][0])
|| $userData['ACTIVE'] !== "Y"
)
{
return false;
}
$removeRightsFromCurrentAdmin = false;
//groups for bitrix24 cloud
if (
Loader::includeModule('bitrix24') &&
!CBitrix24::isMoreAdminAvailable()
)
{
$removeRightsFromCurrentAdmin = true;
if (!Feature::isFeatureEnabled('delegation_admin_rights'))
{
return false;
}
}
[ $employeesGroupId, $portalAdminGroupId ] = self::getGroupsId();
$currentUserGroups = CUser::getUserGroup($userId);
foreach ($currentUserGroups as $groupKey => $group)
{
if ($group == $employeesGroupId)
{
unset($currentUserGroups[$groupKey]);
}
}
$currentUserGroups[] = "1";
$currentUserGroups[] = $portalAdminGroupId;
$user = new CUser();
$user->update($userId, ['GROUP_ID' => $currentUserGroups]);
$event = new Event(
'intranet',
'onUserAdminRigths',
[
'originatorId' => $currentUserId,
'userId' => $userId,
'type' => "setAdminRigths"
]
);
$event->send();
//remove rights from current admin because of limit
if ($removeRightsFromCurrentAdmin)
{
$currentAdminGroups = CUser::getUserGroup($currentUserId);
foreach ($currentAdminGroups as $groupKey => $group)
{
if ($group == 1 || $group == $portalAdminGroupId)
{
unset($currentAdminGroups[$groupKey]);
}
}
$currentAdminGroups[] = $employeesGroupId;
$user->Update($currentUserId, ['GROUP_ID' => $currentAdminGroups]);
}
return true;
}