Исправления безопасности. Устранены уязвимости:
Ограничение на редактирование затраченного времени снова работает: обработчик события был привязан к несуществующему методу, поэтому дату и комментарий существующей записи можно было менять без проверок.
Проверку даты больше нельзя обойти подменой полей запроса: запись от таймера определяется по данным сервера, а не по полям, которые присылает браузер.
Если дату записи не удаётся распознать, запись отклоняется, а не пропускается без проверки.
Исправлена проверка прав на странице настроек модуля: пользователь без права на модуль больше не может менять настройки, исключения и сбрасывать их.
Исправлена XSS-уязвимость на странице настроек модуля: имена пользователей, групп и коды доступа в списке исключений теперь экранируются.
Исправления логики:
В новой карточке задачи проверяется время, добавленное вручную: раньше такие записи ошибочно принимались за записи таймера и не проверялись.
Корректно обрабатывается дата, которая приходит из новой карточки задачи как объект даты, а не строка.
При редактировании записи без изменения даты сохранение больше не запрещается по ошибке.
При отклонении редактирования пользователь получает сообщение об ошибке, а не фатальную ошибку PHP.
Ошибка передаётся стандартным для Битрикса способом, а не исключением.
В новой карточке задачи текст ошибки показывается во всплывающем уведомлении: раньше форма просто зависала, а запись пропадала после обновления страницы.