Laravel Packages

Laravel Personal Data Export

Published
Laravel Personal Data Export image

Freek Van der Herten released a Spatie package called Laravel Personal Data Export last week to help you create zip files containing personal data in your Laravel applications:

This package makes it easy to let a user download an export containing all the personal data. Such an export consists of a zip file containing all the user properties and related info.

With privacy concerns rising on social media and other web applications, exporting user data might be something you want to consider. As seen in the package’s readme, you configure the file and data export by defining a selectPersonalData method the user model:

// in your User model
 
public function selectPersonalData(PersonalDataSelection $personalDataSelection) {
$personalDataSelection
->add('user.json', ['name' => $this->name, 'email' => $this->email])
->addFile(storage_path("avatars/{$this->id}.jpg");
->addFile('other-user-data.xml', 's3');
}

The Laravel Personal Data Export package provides configuration for how many days the personal data will be available to the user, along with some other customizable options:

return [
/*
* The disk where the exports will be stored by default.
*/
'disk' => 'personal-data-exports',
 
/*
* The amount of days the exports will be available.
*/
'delete_after_days' => 5,
 
/*
* Determines whether the user should be logged in to be able
* to access the export.
*/
'authentication_required' => true,
 
/*
* The mailable which will be sent to the user when the export
* has been created.
*/
'mailable' => \Spatie\PersonalDataExport\Mail\PersonalDataExportCreatedMail::class,
];

This package takes care of the boilerplate of all the tasks involved in initiating the data export and then fulfilling it roughly in the following sequence:

First, the package generates the data when you dispatch a CreatePersonalDataExportJob in the application (a queued job by default).

Next, when the job runs, the exported data is zipped and copied to the configured disk. Finally, the user receives a notification email with the URL to the download.

Almost every piece (if not all) of the export process is customizable. You can check out this package on GitHub at spatie/laravel-personal-data-export.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

laravelcloud logo
Laravel Cloud

Easily create and manage your servers and deploy your Laravel applications in seconds.

Visit Laravel Cloud

The latest

View all →
CPX: The Composer Package Executor for PHP image

CPX: The Composer Package Executor for PHP

Read article
Laravel AI SDK Adds Human-in-the-Loop Tool Approval image

Laravel AI SDK Adds Human-in-the-Loop Tool Approval

Read article
Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals image

Pest 5 Released With Test Impact Analysis, Agent Verification, and Evals

Read article
Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs image

Queue-SQL: Run Mass Deletes and Updates Across Parallel Queue Jobs

Read article
Blade Formatting in Laravel Pint image

Blade Formatting in Laravel Pint

Read article
Inertia DevTools Is Now on the Chrome Web Store image

Inertia DevTools Is Now on the Chrome Web Store

Read article