mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-22 14:31:26 +00:00
Add account export
This commit is contained in:
parent
de8d472527
commit
4122bb83cb
3 changed files with 25 additions and 1 deletions
|
@ -9,6 +9,10 @@ use App\UserFilter;
|
|||
use Auth, Cookie, DB, Cache, Purify;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Transformer\ActivityPub\ProfileTransformer;
|
||||
use League\Fractal;
|
||||
use League\Fractal\Serializer\ArraySerializer;
|
||||
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
|
||||
|
||||
trait ExportSettings
|
||||
{
|
||||
|
@ -18,6 +22,21 @@ trait ExportSettings
|
|||
return view('settings.dataexport');
|
||||
}
|
||||
|
||||
public function exportAccount()
|
||||
{
|
||||
$data = Cache::remember('account:export:profile:actor:'.Auth::user()->profile->id, now()->addMinutes(60), function() {
|
||||
$profile = Auth::user()->profile;
|
||||
$fractal = new Fractal\Manager();
|
||||
$fractal->setSerializer(new ArraySerializer());
|
||||
$resource = new Fractal\Resource\Item($profile, new ProfileTransformer());
|
||||
return $fractal->createData($resource)->toArray();
|
||||
});
|
||||
|
||||
return response()->streamDownload(function () use ($data) {
|
||||
echo json_encode($data, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
|
||||
}, 'account.json');
|
||||
}
|
||||
|
||||
public function exportFollowing()
|
||||
{
|
||||
$data = Cache::remember('account:export:profile:following:'.Auth::user()->profile->id, now()->addMinutes(60), function() {
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
<h3 class="font-weight-bold">Data Export</h3>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="alert alert-info font-weight-bold">We generate data exports once per hour, and they may not contain the latest data if you've requested them recently.</div>
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">
|
||||
<div>
|
||||
|
@ -53,7 +54,10 @@
|
|||
<span class="font-weight-bold">Account</span>
|
||||
</div>
|
||||
<div>
|
||||
<span class="small text-muted">Coming Soon</span>
|
||||
<form action="/settings/data-export/account" method="post">
|
||||
@csrf
|
||||
<button type="submit" class="font-weight-bold btn btn-outline-primary btn-sm">Download</button>
|
||||
</form>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -228,6 +228,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact
|
|||
Route::post('data-export/following', 'SettingsController@exportFollowing')->middleware('dangerzone');
|
||||
Route::post('data-export/followers', 'SettingsController@exportFollowers')->middleware('dangerzone');
|
||||
Route::post('data-export/mute-block-list', 'SettingsController@exportMuteBlockList')->middleware('dangerzone');
|
||||
Route::post('data-export/account', 'SettingsController@exportAccount')->middleware('dangerzone');
|
||||
Route::get('developers', 'SettingsController@developers')->name('settings.developers')->middleware('dangerzone');
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue