laravel-gdpr
laravel-gdpr copied to clipboard
Data download usage with Inertia
Hello,
Is it possible to implement data download inside a Laravel-Inertia application?
Thanks a lot in advance
Hey alessiovietri,
Sure! I don't think you'll be able to wire a full size ZIP file using Inertia itself, but you could add a link in one of your Inertia templates using https://inertiajs.com/links
Hi, Thanks for your quick answer. The problem is that when I send the post request (with the correct auth middleware), the response contains the login page and not the file to be downloaded. This is my route, accessed by an axios GET request:
Route::get('/download-data', function () {
$response = \Http::post('http://website.test/gdpr/download', [ Auth::user()->password, ]);
return $response;
})->name('download-data');
Is this correct?
Yes, that's correct. Since your Laravel application uses hashing (that's by default and really should not be disabled haha) the stored password doesn't match the actual plain text version. If you'd like to roll your own auth or disable the re-auth you can change the GDPR config file: https://github.com/sander3/laravel-gdpr/blob/master/config/gdpr.php
If you do want to use re-authentication, you should post the plain text version of the user's password to the gdpr/download endpoint.
Ah ok, so it's only a problem of hashing. I'll try with plain text password, thanks again!
No, it's not working. I tried passing the password with the same code as before (but with plain text):
$response = \Http::post('http://website.test/gdpr/download', [ 'password' ]);
Tried also using withToken() function:
$response = \Http::withToken(csrf_token())->post('http://website.test/gdpr/download', [ 'password' ]);
And using withAuth() function too:
$response = \Http::withAuth('[email protected]', 'password')->post('http://website.test/gdpr/download', [ 'password' ]);
It always opens my login page. Any suggestion?
It opens your login page due to a validation exception redirect.
Try passing ['password' => 'YOUR_PASSWORD_HERE'] instead.
I tried, but nothing changed