diff --git a/app/Http/Controllers/ImportController.php b/app/Http/Controllers/ImportController.php index 7c19bde59e..9b78b82995 100644 --- a/app/Http/Controllers/ImportController.php +++ b/app/Http/Controllers/ImportController.php @@ -368,14 +368,30 @@ class ImportController extends Controller $content = $uploaded->fread($uploaded->getSize()); $contentEncrypted = Crypt::encrypt($content); $disk = Storage::disk('upload'); - $disk->put($newName, $contentEncrypted); - Log::debug('Uploaded file', ['name' => $upload->getClientOriginalName(), 'size' => $upload->getSize(), 'mime' => $upload->getClientMimeType()]); + // user is demo user, replace upload with prepared file. + if (auth()->user()->hasRole('demo')) { + $stubsDisk = Storage::disk('stubs'); + $content = $stubsDisk->get('demo-import.csv'); + $contentEncrypted = Crypt::encrypt($content); + $disk->put($newName, $contentEncrypted); + Log::debug('Replaced upload with demo file.'); - // store configuration file's content into the job's configuration - // thing. - // otherwise, leave it empty. - if ($request->files->has('configuration_file')) { + // also set up prepared configuration. + $configuration = json_decode($stubsDisk->get('demo-configuration.json'), true); + $job->configuration = $configuration; + $job->save(); + Log::debug('Set configuration for demo user', $configuration); + } + if (!auth()->user()->hasRole('demo')) { + // user is not demo, process original upload: + $disk->put($newName, $contentEncrypted); + Log::debug('Uploaded file', ['name' => $upload->getClientOriginalName(), 'size' => $upload->getSize(), 'mime' => $upload->getClientMimeType()]); + } + + // store configuration file's content into the job's configuration thing. Otherwise, leave it empty. + // demo user's configuration upload is ignored completely. + if ($request->files->has('configuration_file') && !auth()->user()->hasRole('demo')) { /** @var UploadedFile $configFile */ $configFile = $request->files->get('configuration_file'); Log::debug( @@ -394,6 +410,9 @@ class ImportController extends Controller } } + // if user is demo user, replace config with prepared config: + + return redirect(route('import.configure', [$job->key])); } diff --git a/config/filesystems.php b/config/filesystems.php index cac819789e..ba8b6b6eb9 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -73,6 +73,11 @@ return [ 'driver' => 'local', 'root' => base_path('resources/seeds'), ], + 'stubs' => [ + 'driver' => 'local', + 'root' => base_path('resources/stubs'), + ], + 'public' => [ 'driver' => 'local', 'root' => storage_path('app/public'),