Merge remote-tracking branch 'origin/api' into api

# Conflicts:
#	.env.testing
#	public/mix-manifest.json
#	resources/js/components/RemoteUpload/RemoteUploadPopup.vue
#	resources/js/store/modules/fileBrowser.js
#	resources/js/store/modules/fileFunctions.js
#	routes/share.php
#	src/Domain/Files/Controllers/VisitorUploadFileChunksController.php
#	tests/Domain/Sharing/VisitorManipulatingTest.php
#	tests/Domain/Traffic/TrafficTest.php
This commit is contained in:
Čarodej
2022-05-16 11:55:22 +02:00
2 changed files with 0 additions and 74 deletions

View File

@@ -3,7 +3,6 @@
use Domain\Sharing\Controllers\ShareController;
use Domain\Zip\Controllers\VisitorZipController;
use Domain\Files\Controllers\VisitorShowFileController;
use Domain\Files\Controllers\VisitorUploadFileController;
use Domain\Folders\Controllers\VisitorCreateFolderController;
use Domain\Sharing\Controllers\WebCrawlerOpenGraphController;
use Domain\Browsing\Controllers\VisitorBrowseFolderController;

View File

@@ -1,73 +0,0 @@
<?php
namespace Domain\Files\Controllers;
use Str;
use Storage;
use Domain\Sharing\Models\Share;
use Illuminate\Http\JsonResponse;
use App\Http\Controllers\Controller;
use Domain\Files\Resources\FileResource;
use Domain\Files\Actions\ProcessFileAction;
use Domain\Files\Requests\UploadFileRequest;
use Support\Demo\Actions\FakeUploadFileAction;
use Domain\Files\Actions\StoreFileChunksAction;
use Domain\Sharing\Actions\ProtectShareRecordAction;
use Domain\Sharing\Actions\VerifyAccessToItemAction;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
/**
* guest user upload file into shared folder
*/
class VisitorUploadFileController extends Controller
{
public function __construct(
public ProcessFileAction $processFie,
public StoreFileChunksAction $storeFileChunks,
private FakeUploadFileAction $fakeUploadFile,
private ProtectShareRecordAction $protectShareRecord,
private VerifyAccessToItemAction $verifyAccessToItem,
) {
}
/**
* @throws FileNotFoundException
*/
public function __invoke(
UploadFileRequest $request,
Share $shared,
): JsonResponse {
if (isDemoAccount()) {
return response()->json(($this->fakeUploadFile)($request), 201);
}
// Check ability to access protected share record
($this->protectShareRecord)($shared);
// Check shared permission
if (is_visitor($shared)) {
return response()->json(accessDeniedError(), 403);
}
// Add default parent id if missing
if ($request->missing('parent_id')) {
$request->merge(['parent_id' => $shared->item_id]);
}
// Check access to requested directory
($this->verifyAccessToItem)($request->input('parent_id'), $shared);
// Get file name
$name = Str::uuid() . '.' . $request->input('extension');
// Put file to user directory
Storage::disk('local')->put("files/$shared->user_id/$name", $request->file('file')->get());
// Process file
$file = ($this->processFie)($request, $shared->user, $name);
// Set public access url
$file->setSharedPublicUrl($shared->token);
return response()->json(new FileResource($file), 201);
}
}