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