diff --git a/app/Http/Controllers/Api/BaseApiController.php b/app/Http/Controllers/Api/BaseApiController.php index 985af2dca..3b4162423 100644 --- a/app/Http/Controllers/Api/BaseApiController.php +++ b/app/Http/Controllers/Api/BaseApiController.php @@ -7,7 +7,7 @@ use App\Http\Controllers\{ Controller, AvatarController }; -use Auth, Cache, URL; +use Auth, Cache, Storage, URL; use Carbon\Carbon; use App\{ Avatar, @@ -290,6 +290,27 @@ class BaseApiController extends Controller return response()->json($res); } + public function deleteMedia(Request $request) + { + $this->validate($request, [ + 'id' => 'required|integer|min:1|exists:media,id' + ]); + + $media = Media::whereNull('status_id') + ->whereUserId(Auth::id()) + ->findOrFail($request->input('id')); + + Storage::delete($media->media_path); + Storage::delete($media->thumbnail_path); + + $media->forceDelete(); + + return response()->json([ + 'msg' => 'Successfully deleted', + 'code' => 200 + ]); + } + public function verifyCredentials(Request $request) { $profile = Auth::user()->profile; diff --git a/routes/web.php b/routes/web.php index 1bcce563f..3dc7bce9f 100644 --- a/routes/web.php +++ b/routes/web.php @@ -77,6 +77,7 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::post('avatar/update', 'ApiController@avatarUpdate'); Route::get('likes', 'ApiController@hydrateLikes'); Route::post('media', 'ApiController@uploadMedia'); + Route::delete('media', 'ApiController@deleteMedia'); Route::get('notifications', 'ApiController@notifications'); Route::get('timelines/public', 'PublicApiController@publicTimelineApi'); Route::get('timelines/home', 'PublicApiController@homeTimelineApi'); @@ -214,6 +215,9 @@ Route::domain(config('pixelfed.domain.app'))->middleware(['validemail', 'twofact Route::get('applications', 'SettingsController@applications')->name('settings.applications')->middleware('dangerzone'); Route::get('data-export', 'SettingsController@dataExport')->name('settings.dataexport'); + Route::post('data-export/following', 'SettingsController@exportFollowing'); + Route::post('data-export/followers', 'SettingsController@exportFollowers'); + Route::post('data-export/mute-block-list', 'SettingsController@exportMuteBlockList'); Route::get('developers', 'SettingsController@developers')->name('settings.developers')->middleware('dangerzone'); });