Intranet 26.1775.0–26.1900.0: белый список SharePoint и лимит повторных приглашений
Обновление безопасности
Закрыта уязвимость или ослабленная проверка прав. Ставить в первую очередь.
Intranet 26.1775.0 и 26.1900.0 меняют приглашения в коллабы и исходящие запросы к SharePoint. Для синхронизации теперь нужен белый список серверов, а повторные письма ограничены интервалом. В портале появились страницы офисов и публичной базы знаний; разработчикам доступны команды перевода сотрудников в интранет и провайдер отсутствий.
Новое
Переводите сотрудника в интранет через публичную команду
В 26.1900.0 профиль использует Bitrix\Intranet\Public\Command\User\TransferToIntranetCommand(User $user, DepartmentCollection $departments). Команда меняет группы и отделы пользователя, при ошибке откатывает изменения. Старый код профиля опирался на зашитые ID групп 11 и 13, которые на другой коробке могли означать другие группы.
В своём сценарии перевода можно использовать эту команду вместо повторения логики профиля. Отделы должны существовать в точности; ошибка назначения в AJAX профиля имеет код INTRANET_USER_PROFILE_DEPARTMENT_ASSIGN_ERROR.
Получайте отпуска и отсутствия для своего интерфейса
Новый Public\Provider\User\AbsenceProvider из 26.1900.0 возвращает активный отпуск через getActiveVacation(int, DateTime), отсутствия сотрудников за день через getUsersAbsencesByDay(array, ?Date) и блокирующие отсутствия за период через getUsersBlockingAbsences(array, DateTime, ?DateTime). Для результата активного отпуска есть DTO ActiveVacation и ActiveVacationResult с состояниями trusted/untrusted, для пакетной проверки — BlockingAbsenceBatchResult.
Такой провайдер можно подключить к своей форме выбора сотрудника или отчёту. Для дневной выборки передайте список ID и дату, для проверки периода — начало и необязательный конец интервала.
Откройте новые страницы портала
В 26.1900.0 добавлен маршрут /pub/note/{token} для базы знаний по внешней ссылке. На /sync/ появилась вкладка «Звонки». Страница /stafftrack/offices/, карточка офиса в профиле и плитка в виджете приглашений используют новые офисы из stafftrack 26.400.0–26.500.0. Их доступность зависит от настроек и флага офисов в stafftrack.
Для нового выбора главного инструмента в левом меню есть AJAX-действия MainTool.getState, apply, confirmInitialShow. Этот интерфейс скрыт за Internal\MainTool\MainToolPickerRedesignFlag, по умолчанию выключенным.
В регистрации при занятом email теперь показывается ссылка на вход. Ряд действий OTP получил необязательный signedUserId для продолжения входа с обязательной двухфакторной авторизацией. У смены email/телефона и отправки кодов также добавлен необязательный flowId; у completeSkipDeviceConnect и cancelSkipDeviceConnect он по-прежнему обязателен.
Что сломается
Добавьте SharePoint в белый список
В 26.1900.0 проверки списка стоят при проверке сервиса, постановке следующей синхронизации и сохранении связи. Пустой список запрещает все серверы. Администратор заполняет его на новой вкладке SharePoint в настройках intranet; запрещённый сервер даёт SP_ERROR_SERVER_NOT_ALLOWED.
Существующие связи не заполняют список в коде этого снимка. После обновления синхронизация таких связей пропускается, пока администратор не добавит origin сервера. Список хранит нормализованные схему, хост и порт; URL с userinfo (user:pass@host) отклоняется. Проверка закрывает исходящие запросы на произвольный SP_URL.
Соблюдайте интервал повторных приглашений
В 26.1900.0 email-приглашение на один адрес можно отправить раз в intranet:invite_resend_timeout секунд. Значение по умолчанию — 3600. CIntranetInviteDialog при срабатывании лимита возвращает false, это касается и повторной отправки. У SMS-реинвайта появилась ошибка ERROR_TIMEOUT_NOT_EXCEEDED. Свой интерфейс должен показать отказ, если приглашение ещё нельзя повторить.
С 26.1775.0 ссылка в коллабу на коробке, где не подключается extranet, ведёт на /?login=yes вместо регистрации. CollabInvitationLinkFacade на всех входах проверяет модуль и бросает AccessDeniedException; уже авторизованный пользователь тоже не добавляется в коллабу в обход этой проверки.
Проверьте старые формы и собственные настройки меню
Из старых компонентов intranet.mail.config.home и intranet.mail.setup в 26.1900.0 убраны UI интеграции ящика с CRM и AJAX-действия disablecrm, enablecrm, configcrm. Если ваша копия формы вызывает их, эти вызовы нужно убрать.
Удалён класс Bitrix\Intranet\Config\Feature\CollaborationWebMenuFlag. Код перенесён в пространство Internal; внешние ссылки на прежнее имя больше не работают. Это касается и кода, который передавал старое имя класса в Main\Config\Feature.
Смена темы группы теперь требует права изменять группу. Старый селектор intranet.user.selector.new фильтрует сотрудников и отделы по видимости в HR-структуре; нечисловой SECTION_ID возвращает пустой ответ. Если своя форма опиралась на более широкую выборку, после обновления состав списка сократится.
БД
Белый список SharePoint хранится в новой b_intranet_sharepoint_allowed_origin с полями ID и ORIGIN varchar(512). Из PHP для списка доступны Integration\Sharepoint\ServerAllowList::list(), replace() и isAllowed(); для своей административной формы используйте их вместо прямой записи ненормализованных URL в таблицу.
Устаревшие и удалённые API в этой версии
| Символ | Статус | Чем заменять |
|---|---|---|
Bitrix\Intranet\Config\Feature\CollaborationWebMenuFlag
|
Удалено | — |