Редагуйте дані моделей за допомогою пакету Redactable Models для Laravel

Перекладено ШІ
Оригінал: Laravel News
Оновлено: 13 вересня, 2025
Ви коли-небудь думали про те, як захистити чутливі дані у вашому веб-додатку? У нашій статті розглядається пакет Redactable Models для Laravel, який дозволяє просто та ефективно редагувати, маскувати або приховувати інформацію в моделях, гарантуючи безпеку та конфіденційність ваших даних. Читайте далі, щоб дізнатися більше про його основні можливості

Redactable Models для Laravel — це пакет від Ешлі Аллен, який дозволяє редагувати, запобігати розголошенню або маскувати дані у ваших моделях Laravel:

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

Цей пакет працює шляхом реалізації інтерфейсу Redactable та впровадження його методів. Ви вільні реалізувати їх так, як вам подобається, але пакет надає певні рекомендації для спрощення процесу редагування даних. Ось як виглядає скелет моделі та методи інтерфейсу:

use AshAllenDesign\RedactableModels\Interfaces\Redactable;
use Illuminate\Contracts\Database\Eloquent\Builder;

class User extends Model implements Redactable
{
    public function redactable(): Builder
    {
        // Визначте критерії, за якими записи є "редагованими"
    }

    public function redactionStrategy(): RedactionStrategy
    {
        // Визначте стратегію та поля для редагування
    }
}

Метод redactionStrategy() використовується для визначення як редагувати дані моделі та які поля підлягають редагуванню. Під час ознайомлення з цим пакетом мені сподобалася стратегія MaskContents, адже вона дозволяє отримати підказки щодо конкретного запису, якщо вам потрібно зіставити його з реальними даними, або дати невелику підказку про дані без їх розголошення:

public function redactionStrategy(): RedactionStrategy
{
    return app(MaskContents::class)
        ->mask(field: 'name', character: '*', index: 0, length: 4)
        ->mask(field: 'email', character: '-', index: 2, length: 3);
}

# Основні функції

💻 Почати роботу з цим пакетом можна на GitHub: ash-jc-allen/redactable-models