Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама
Новини 26 червня 2026

Yammi Audit Log: пакет для відстеження змін через черги та фонові завдання

Більшість пакетів для аудиту можуть показати, коли поле змінилося і хто його змінив. Але вони втрачають контекст, коли зміна відбувається через дві черги після запиту, що її ініціював. Yammi Audit Log від RomaLytar вирішує цю проблему: поряд зі значеннями "до" і "після" він записує, хто виконав зміну, хто її ініціював, та correlation ID, який пов'язує запит, завдання, команду або заплановане завдання в єдиний ланцюг.

Аудит без змін у моделях

Немає потреби додавати трейти, імплементувати інтерфейси чи реєструвати обсервери. Після встановлення пакета та виконання міграцій записи Eloquent автоматично потрапляють в аудит-лог для всіх моделей:

User::first()->update(['name' => 'Eric']);

Це оновлення вже зафіксоване в журналі аудиту без будь-яких змін у моделі User. За замовчуванням захоплюються всі моделі, але можна перемкнути режим на opt-in у config/audit-log.php, якщо потрібно відстежувати лише певний набір:

'capture'   => ['mode' => env('AUDIT_LOG_CAPTURE_MODE', 'all')],  // all | opt_in
'retention' => ['days' => env('AUDIT_LOG_RETENTION_DAYS', 180)],
'write'     => ['async' => env('AUDIT_LOG_WRITE_ASYNC', false)],

Важливе застереження: пакет підключається до подій моделей Eloquent, тому прямі оновлення через Query Builder не захоплюються автоматично і мають бути записані явно.

Збереження інформації про актора через черги

Це та частина, яка виділяє Yammi серед типових рішень для аудиту. Коли користувач диспатчить завдання, яке пізніше модифікує модель, звичайний аудит-трейл приписує зміну воркеру черги, бо саме цей процес виконав запис. Yammi проносить оригінальну ідентичність через весь ланцюг, тому запис розрізняє актора, який виконав зміну, та особу, яка її ініціювала. Correlation ID потім групує всі записи, що належать до одного робочого процесу, дозволяючи відтворити каскад змін, що охоплює контролер, чергове завдання та заплановану команду, замість того щоб розглядати їх як непов'язані рядки.

Записаний контекст також відзначає, де відбулася зміна - чи то HTTP-запит, чергове завдання, artisan-команда чи планувальник, що корисно, коли та сама модель записується з кількох точок входу.

Створений, щоб не заважати

Шлях запису спроектований так, щоб аудит не призводив до відмови запиту чи уповільнення. Кожна зміна - це один insert плюс пакетний індекс полів, що змінилися, і ці записи полів потрапляють у виділену індексовану таблицю, тому пошук за полем не означає сканування JSON-колонок. Записи можна відправляти в чергу, якщо не хочеться платити за них у реальному часі:

'write' => ['async' => env('AUDIT_LOG_WRITE_ASYNC', false)],

Шлях захоплення також fail-open, тому якщо сам запис аудиту видає помилку, базова операція все одно проходить замість того, щоб забрати з собою весь запит.

Опціональні рівні криміналістики та відповідності вимогам

Поза основним трейлом, Yammi постачається з набором підсистем, які залишаються неактивними, поки їх не увімкнути. Режим цілісності додає ланцюг хешів, стійкий до підробки, щоб можна було виявити постфактум, чи були змінені збережені записи, а перегляд "машини часу" відтворює стан запису в минулому. Є інструменти GDPR для звітів суб'єктів та обробки збереження, виявлення аномалій, стримінг до SIEM, сповіщення в Slack та вебхуки, підтримка мультитенантності. Опціональна панель керування доступна через окрему команду:

composer require romalytar/yammi-audit-log-laravel
php artisan migrate
php artisan audit-log:ui enable

Панель та функції цілісності, криміналістики та відповідності вимогам - всі opt-in, що тримає базову установку близькою до простого журналу змін і дозволяє додавати важчий механізм лише там, де додаток дійсно цього потребує.

Сумісність та підтримка

Yammi працює на PHP 8.1+ та Laravel від 9 до 13 версії, підтримує будь-яку базу даних, з якою працює Laravel. Документацію та вихідний код можна знайти на GitHub.

38

Читати в документації

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Новини 27 жовтня 2026

Filament v5.11.0: поля й віджети на React, Vue і Svelte та жорсткіший захист Livewire

Filament v5.11.0 дозволяє писати власні поля форм, компоненти схем і віджети на React, Vue, Svelte або чистому JavaScript. Паралельно v5.11.0 і v4.16.0 закривають для клієнта внутрішні Livewire-методи та стан і додають опційні ліміти для репітерів і пагінації таблиць.

2
Новини 27 жовтня 2026

Livewire 4.4.8 закриває обхід #[Authorize], а NativePHP Mobile - сім вразливостей

Livewire 4.4.8 виправляє GHSA-mhf7-xp6r-6qrc (CVSS 6.5): атрибут #[Authorize] можна було обійти й виконати дію над чужим записом. Того ж тижня NativePHP опублікувала сім попереджень для NativePHP for Mobile - виправлення в nativephp/mobile 4.6.1 і 3.3.11, але до користувачів вони дійдуть лише з новою збіркою застосунку.

1

Вакансії за темою

Intetics
7 днів тому

Senior Full-Stack PHP Developer (Laravel + React/Vue)

Senior Full-Stack PHP розробник створює й підтримує масштабовані веб-застосунки: бекенд на Laravel та фронтенд на React або Vue. Відповідає за архітектурні рішення (дизайн сервісів, моделювання даних, кешування, черги), проєктує REST API та інтеграції, рефакторить legacy-код і оптимізує запити. Вимоги: 5+ років досвіду з сучасним PHP 8.x, 3+ роки з Laravel, 3+ роки з React або Vue, сильний TypeScript, досвід з Redis і чергами, автотести та CI/CD.

Z Global E-Commerce
29 днів тому

Full-Stack Developer (PHP/Laravel + Vue 3)

Full-Stack розробник з глибоким досвідом бекенду. Розробляєте масштабовані веб-платформи з комплексною бізнес-логікою, працюєте з PHP/Laravel, SQL, Vue 3/TypeScript. Основні вимоги: досвід з Laravel, Eloquent, проектування API, оптимізація баз даних (включно з мільйонами записів), фронтенд на Vue 3 з Composition API, TypeScript. Цінується розуміння архітектури, продуктивності й довгострокової підтримуваності коду.

Wooden Sword
30 днів тому

Senior PHP Developer (Game Backend)

Розробник backend для мобільної RPG з високим навантаженням. Основний стек: PHP Laravel API та TypeScript Nakama Game Server. Відповідальність за повний цикл розробки функцій — від логіки до тестування, code review, оптимізації та документації. Вимоги: 5+ років backend-досвіду, бездоганне знання Laravel/PHP, сильні навички TypeScript, PostgreSQL та асинхронного програмування.

Пакети за темою

Bagisto

bagisto/bagisto

Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.

28,282 v2.5.0 13 26

Lang

laravel-lang/lang

Список 126 мов для Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova, Laravel Spark та Laravel UI.

7,780 15.37.4 12