]> BookStack Code Mirror - bookstack/blob - app/Exports/Controllers/ImportController.php
640b4c1089147bf1dac2d31d25de4acc6c67ca89
[bookstack] / app / Exports / Controllers / ImportController.php
1 <?php
2
3 namespace BookStack\Exports\Controllers;
4
5 use BookStack\Exceptions\ZipValidationException;
6 use BookStack\Exports\ImportRepo;
7 use BookStack\Http\Controller;
8 use BookStack\Uploads\AttachmentService;
9 use Illuminate\Http\Request;
10
11 class ImportController extends Controller
12 {
13     public function __construct(
14         protected ImportRepo $imports,
15     ) {
16         $this->middleware('can:content-import');
17     }
18
19     public function start(Request $request)
20     {
21         // TODO - Show existing imports for user (or for all users if admin-level user)
22
23         return view('exports.import', [
24             'zipErrors' => session()->pull('validation_errors') ?? [],
25         ]);
26     }
27
28     public function upload(Request $request)
29     {
30         $this->validate($request, [
31             'file' => ['required', ...AttachmentService::getFileValidationRules()]
32         ]);
33
34         $file = $request->file('file');
35         try {
36             $import = $this->imports->storeFromUpload($file);
37         } catch (ZipValidationException $exception) {
38             session()->flash('validation_errors', $exception->errors);
39             return redirect('/import');
40         }
41
42         return redirect("imports/{$import->id}");
43     }
44 }