From 8dba62952b36d03ee0a8bcc79227ea2b69a81299 Mon Sep 17 00:00:00 2001 From: soufiane Date: Wed, 21 Feb 2024 18:04:20 +0100 Subject: [PATCH] wait #6717 @1:30 refacto --- .../FluidbookPublicationCrudController.php | 2 +- .../FluidbookCollection/DownloadOperation.php | 10 +------ .../SettingsExportOperation.php | 25 +++++++++++++++++ .../DownloadOperation.php | 14 ---------- .../SettingsExportOperation.php | 28 +++++++++++++++++++ app/Jobs/FluidbookSettingsExport.php | 4 +++ app/Models/FluidbookCollection.php | 4 ++- app/Models/FluidbookPublication.php | 2 ++ 8 files changed, 64 insertions(+), 25 deletions(-) create mode 100644 app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php create mode 100644 app/Http/Controllers/Admin/Operations/FluidbookPublication/SettingsExportOperation.php diff --git a/app/Http/Controllers/Admin/FluidbookPublicationCrudController.php b/app/Http/Controllers/Admin/FluidbookPublicationCrudController.php index c33f41cf5..57284f2f1 100644 --- a/app/Http/Controllers/Admin/FluidbookPublicationCrudController.php +++ b/app/Http/Controllers/Admin/FluidbookPublicationCrudController.php @@ -24,7 +24,7 @@ class FluidbookPublicationCrudController extends \Cubist\Backpack\Magic\Controll use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\GetPageFromWebsiteOperation; use \App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\BastideOperation; use \App\Http\Controllers\Admin\Operations\FluidbookPublication\YSLOperation; - + /* diff --git a/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php index 0fe357b9c..6037ec558 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php @@ -21,17 +21,9 @@ trait DownloadOperation protected function setupDownloadRoutes($segment, $routeName, $controller) { - Route::match(['get','post'], $segment . '/{id}/download_settings', $controller . '@downloadSettingsByIds')->name("download_settings_by_ids"); + // } protected $button = 'fluidbook_collection'; protected $downloadJob = FluidbookCollectionDownload::class; - - protected function downloadSettingsByIds($id) { - $userId = backpack_user()->id; - $publications = Arr::flatten(FluidbookCollection::where('id',$id)->get('publications')->toArray(), 2); - $ids = Arr::join(array_column($publications,'fluidbook'), ','); - $file = (new FluidbookSettingsExport($ids,$userId,true))->handle(); - return response()->download($file, 'settings_export.xlsx')->deleteFileAfterSend(); - } } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php new file mode 100644 index 000000000..3efb4efcb --- /dev/null +++ b/app/Http/Controllers/Admin/Operations/FluidbookCollection/SettingsExportOperation.php @@ -0,0 +1,25 @@ +name("download_settings_by_ids"); + } + + protected function collectionSettings($id) { + $userId = backpack_user()->id; + $publications = Arr::flatten(FluidbookCollection::where('id',$id)->get('publications')->toArray(), 2); + $ids = Arr::join(array_column($publications,'fluidbook'), ','); + $file = (new FluidbookSettingsExport($ids,$userId,true))->handle(); + return response()->download($file, 'settings_export.xlsx')->deleteFileAfterSend(); + } +} diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php index 7c017bcd2..92e576d14 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php @@ -22,8 +22,6 @@ trait DownloadOperation Route::match(['get'], $segment . '/{id}/package/{action}/{version}', $controller . '@package'); Route::match(['get'], $segment . '/{id}/package/{action}/scorm/{scormversion}', $controller . '@packageScorm'); Route::match(['get'], $segment . '/{id}_{hash}/download/{file}', $controller . '@download')->withoutMiddleware([CheckIfAdmin::class]); - Route::match(['get','post'], $segment . '/download_settings/{file}', $controller . '@downloadSettings')->withoutMiddleware([CheckIfAdmin::class])->name("download_settings"); - Route::match(['post'], $segment . '/send_link/{ids}', $controller . '@sendLinkForDownload')->middleware([CheckIfAdmin::class])->name("send_link"); } protected function setupDownloadDefaults() @@ -129,16 +127,4 @@ trait DownloadOperation Alert::add('success', __('La compilation a été placée en file d\'attente. Vous recevrez un email lorsqu\'elle sera terminée.'))->flash(); return back(); } - - protected function downloadSettings($file) { - $name = "settings_export"; - $path = "/tmp/cubist".base64_decode($file); - if (!file_exists($path)) abort(404); - return response()->download($path, $name . '.xlsx'); - } - - protected function sendLinkForDownload($ids) { - $userId = backpack_user()->id; - dispatch_sync(new FluidbookSettingsExport($ids,$userId)); - } } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/SettingsExportOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/SettingsExportOperation.php new file mode 100644 index 000000000..a6eb20e81 --- /dev/null +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/SettingsExportOperation.php @@ -0,0 +1,28 @@ +withoutMiddleware([CheckIfAdmin::class])->name("download_settings"); + Route::match(['post'], $segment . '/send_link/{ids}', $controller . '@sendLinkForDownload')->name("send_link"); + } + + protected function fluidbookSettings($file) { + $name = "settings_export"; + $path = "/tmp/cubist".base64_decode($file); + if (!file_exists($path)) abort(404); + return response()->download($path, $name . '.xlsx'); + } + + protected function sendLinkForDownload($ids) { + $userId = backpack_user()->id; + dispatch_sync(new FluidbookSettingsExport($ids,$userId)); + } +} diff --git a/app/Jobs/FluidbookSettingsExport.php b/app/Jobs/FluidbookSettingsExport.php index b429f0253..fde7ac4b5 100644 --- a/app/Jobs/FluidbookSettingsExport.php +++ b/app/Jobs/FluidbookSettingsExport.php @@ -35,6 +35,10 @@ class FluidbookSettingsExport extends Base { $user = User::withoutGlobalScopes()->find($this->userID); //5908 + if(!can('fluidbook-publication:admin')){ + abort('403'); + } + // $model = FluidbookPublication::whereIn('id', $this->listID); diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index 5f8fa043e..170d01bc5 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -8,6 +8,7 @@ use App\Http\Controllers\Admin\Operations\ChangeownerOperation; use App\Http\Controllers\Admin\Operations\ChangestatusOperation; use App\Http\Controllers\Admin\Operations\FluidbookCollection\DownloadOperation; use App\Http\Controllers\Admin\Operations\FluidbookCollection\PreviewOperation; +use App\Http\Controllers\Admin\Operations\FluidbookCollection\SettingsExportOperation; use App\Models\Base\ToolboxDownloadable; use App\Jobs\RefreshUsersTree; use App\Models\Base\ToolboxStatusModel; @@ -42,7 +43,8 @@ class FluidbookCollection extends ToolboxStatusModel PreviewOperation::class, DownloadOperation::class, ChangeownerOperation::class, - ChangestatusOperation::class + ChangestatusOperation::class, + SettingsExportOperation::class ]; protected static $_permissionBase = 'fluidbook-collection'; diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index 17e3fe9a9..3953890bd 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -35,6 +35,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\StatsOperation; use App\Http\Controllers\Admin\Operations\FluidbookPublication\UpgradeOperation; use App\Http\Controllers\Admin\Operations\FluidbookPublication\YSLOperation; use App\Http\Controllers\Admin\Operations\InvoiceOperation; +use App\Http\Controllers\Admin\Operations\FluidbookPublication\SettingsExportOperation; use App\Jobs\FluidbookImagesPreprocess; use App\Jobs\FluidbookSocialImage; use App\Jobs\GenerateDeliveryThumbnailsPreview; @@ -104,6 +105,7 @@ class FluidbookPublication extends ToolboxStatusModel ChangeownerOperation::class, ChangestatusOperation::class, InvoiceOperation::class, + SettingsExportOperation::class, // Services SocialImageOperation::class, ExportPdfOperation::class, -- 2.39.5