Журнал изменений на сайте
Предисловие
У вас было такое, когда кто-то что-то натворил, а концов не найти? И чем более масштаб диверсии и выше ответственность, тем меньше шансов найти виноватого. Тем паче, что чем больше народа, тем легче замести следы и свалить на ближнего своего. А такая безнаказанность порождает раздолбайство в ещё больших количествах.
А ещё некоторые гос-структуры имеют предписание вести полный лог изменений на сайте – кто и чего и когда делал на сайте. В идеале хотят ещё и видеть, что изменилось!
Проблема
1. Мы хотим видеть все изменения на сайте: кто, когда, от куда, во сколько, что и сколько раз.
2. Необходимо данные отчеты где-то хранить, как-то защитить от изменения.
3. Было бы здорово видеть объемы работ на сайте.
4. Хочется иметь удобный поиск по полученным журналам действий редакторов, наглядное отображение, доступный фильтр и было бы удачей выгрузить все или некоторую часть в эксель.
5. Ну и до кучи, сделайте так, чтобы вдруг нечаянно кто-нибудь нечаянно не удалил сразу пачку новостей или раздел документов.
Формируем задачу
1. Создаем модуль-перехватчик событий. Сразу отметаем перехват событий в форуме, блогах, соцсети и других развлекательных модулях.
2. Чтобы упростить работу с журналами, отказываемся от хранения оных в базе данных и будем писать их сразу в csv-файл. Папку, где хранятся файлы журнала изменений на сайте необходимо конечно же закрыть от любопытных глаз.
3. Чтобы сделать дополнительную защиту файлов журнала будем высылать их раз в сутки (предварительно упаковав в архив) на указанные в настройках электронные адреса.
4. Для удобства работы с журналом, рискнем отказаться от стандартного интерфейса админки 1С-Битрикс, что развязывает нам руки по полной. Добавим в таблицы элементы быстрой фильтрации, что позволит одним кликом нам избавиться от ненужных данных и сосредоточится на нужных.
5. В журнал изменений будем писать логин пользователя, дату и время изменений, IP-адрес, какое действие было совершено, тип инфо блока, название инфо блока и название элемента (или страницы).
6. Добавим в таблицу ссылки для быстрого перехода на редактируемые элементы, профиль пользователя и прочие удобства по возможности.
7. Конечно же все это разбиваем на постраничку и добавляем сортировку на каждую колонку таблицы.
8. Генерируем по агенту ежесуточные отчеты. К отчетам прикрепляем архив нового файла журнала, добавляем в письмо информацию о дате создания журнала и общую статистику о количестве изменений за сутки (очень наглядно показывает объемы работ на сайте).
9. Добавляем в настройках фильтр по всем файлам журналов. Теперь можно легко выдать распечатку всех изменений за определенную дату сделанную определенным пользователем или с определенного айпишника, или с определенным файлом, инфоблоком и т.д.
10. Так как журналов может быть очень много, добавляем настройку на ограничение хранимых журналов на сайте и параметр, на какие адреса рассылать файлы журнала.
11. Т.к. мы работаем изначально с файлами формата csv, надобности в конвертацию для экселя нет. Также, все генерируемые фильтром отчеты легко скачиваются в том-же экселе, распечатываются и прикрепляются к делу.
12. Побочным явлением у нас также фиксируются все обращения в формах обратной связи и прочих формах от обычных посетителей, что является весьма полезной информацией.
13. Добавляем функционал защиты от удаления элементов. Допустим, что файлы удалить пачкой все-таки труднее, да и восстановить их из бэкапа (предполагается, что правильные админы делают ежедневные бэкапы сайта) очень легко. Поэтому концентрируемся на удалении элементов инфо блоков. Делаем администратору сайта функционал, позволяющий указать инфоблоки, в которых удаление элемента запрещено. Даже администратору. Для этого делаем перехватчик события на удаление и подменяем команду удаления командой деактивации элемента. Ну и не забываем для устрашения все это сопроводить ругательствами красными буквами в рамке.
Как и где использовать
Модуль необходим на гос-сайтах, на сайтах, где множество редакторов. Также модуль удобен для разбора полетов между разработчиками и владельцем сайта – чтобы не валить друг на друга, а просто сесть и разобраться.
В заключении, хочется отметить, что данный модуль максимально эффективен при работе совместно с модулем документооборота. Именно он позволяет увидеть (методом сравнения), что изменялось в документе и вернуть его в нужный вид при необходимости.Модуль живет тут: Модуль для 1С-Битрикс: Журнал изменений на сайте