From 1d94b1773dec9e6514ccd8fb2be771f4ebe613cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Mon, 8 Jan 2024 15:55:07 +0100 Subject: [PATCH] Add front button to Export --- app/Http/Controllers/Bo/ExportController.php | 34 +++++++++++++++++++ app/Providers/AuthServiceProvider.php | 3 ++ resources/ts/bo/utilities/fontawesome.ts | 2 ++ resources/views/bo/layouts/nav-list.blade.php | 9 +++++ routes/web-bo.php | 4 +++ 5 files changed, 52 insertions(+) create mode 100644 app/Http/Controllers/Bo/ExportController.php diff --git a/app/Http/Controllers/Bo/ExportController.php b/app/Http/Controllers/Bo/ExportController.php new file mode 100644 index 0000000..6c3caf5 --- /dev/null +++ b/app/Http/Controllers/Bo/ExportController.php @@ -0,0 +1,34 @@ +diff($exportedFiles)->first(); + if (!$exportedFile) { + response()->redirectToRoute('bo.dashboard')->withErrors([ + 'Export failed to catch the exported file' + ])->throwResponse(); + } + /** @var \Symfony\Component\Finder\SplFileInfo $exportedFile */ + return response()->streamDownload(function () use ($exportedFile) { + echo $exportedFile->getContents(); + }, $exportedFile->getBasename(), [ + 'Content-Type' => File::mimeType($exportedFile->getRealPath()) + ]); + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index 1945fce..f43fbb6 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -26,5 +26,8 @@ class AuthServiceProvider extends ServiceProvider Gate::define('isConceptor', function (User $user) { return $user->role === RoleEnum::conceptor; }); + Gate::define('exportZip', function (User $user) { + return $user->role === RoleEnum::conceptor; + }); } } diff --git a/resources/ts/bo/utilities/fontawesome.ts b/resources/ts/bo/utilities/fontawesome.ts index d4b9149..ea22cbe 100644 --- a/resources/ts/bo/utilities/fontawesome.ts +++ b/resources/ts/bo/utilities/fontawesome.ts @@ -25,6 +25,7 @@ import { faEraser, faEye, faEyeSlash, + faFileExport, faFolderOpen, faListUl, faPaintRoller, @@ -88,5 +89,6 @@ library.add(faChevronRight); library.add(faCircleXmark); library.add(faCircleNotch); library.add(faSliders); +library.add(faFileExport); dom.watch(); diff --git a/resources/views/bo/layouts/nav-list.blade.php b/resources/views/bo/layouts/nav-list.blade.php index 8116998..ca9890d 100644 --- a/resources/views/bo/layouts/nav-list.blade.php +++ b/resources/views/bo/layouts/nav-list.blade.php @@ -78,5 +78,14 @@ @endcan + + @can('exportZip') + + @endcan @endauth diff --git a/routes/web-bo.php b/routes/web-bo.php index a3369a9..a0d34d2 100644 --- a/routes/web-bo.php +++ b/routes/web-bo.php @@ -3,6 +3,7 @@ use App\Http\Controllers\Bo\ActivityLogController; use App\Http\Controllers\Bo\BrandController; use App\Http\Controllers\Bo\DashboardController; +use App\Http\Controllers\Bo\ExportController; use App\Http\Controllers\Bo\ProductController; use App\Http\Controllers\Bo\RangeController; use App\Http\Controllers\Bo\SettingsController; @@ -31,6 +32,9 @@ Route::prefix('bo') Route::middleware('auth:backend')->group(function () { Route::get('/', [DashboardController::class, 'index'])->name('dashboard'); + // * EXPORT. + Route::get('export', [ExportController::class, 'exportToZip'])->name('export'); + // * USERS. Route::resource('users', UserController::class)->except('show'); Route::patch('/users/{user}/change-published', [