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') +