3 namespace BookStack\Exports\Controllers;
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;
11 class ImportController extends Controller
13 public function __construct(
14 protected ImportRepo $imports,
16 $this->middleware('can:content-import');
19 public function start(Request $request)
21 // TODO - Show existing imports for user (or for all users if admin-level user)
23 return view('exports.import', [
24 'zipErrors' => session()->pull('validation_errors') ?? [],
28 public function upload(Request $request)
30 $this->validate($request, [
31 'file' => ['required', ...AttachmentService::getFileValidationRules()]
34 $file = $request->file('file');
36 $import = $this->imports->storeFromUpload($file);
37 } catch (ZipValidationException $exception) {
38 session()->flash('validation_errors', $exception->errors);
39 return redirect('/import');
42 return redirect("imports/{$import->id}");