mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
it move file to another folder in upload request
This commit is contained in:
5
resources/js/store/modules/fileFunctions.js
vendored
5
resources/js/store/modules/fileFunctions.js
vendored
@@ -58,7 +58,10 @@ const actions = {
|
||||
if (!noSelectedItem) commit('CLIPBOARD_CLEAR')
|
||||
|
||||
// Get route
|
||||
let route = getters.sharedDetail ? `/api/editor/move/${router.currentRoute.params.token}` : '/api/move'
|
||||
let route = {
|
||||
RequestUpload: `/api/upload-request/${router.currentRoute.params.token}/move`,
|
||||
Public: `/api/editor/move/${router.currentRoute.params.token}`,
|
||||
}[router.currentRoute.name] || '/api/move'
|
||||
|
||||
let moveToId = null
|
||||
|
||||
|
||||
@@ -3,22 +3,27 @@
|
||||
use Domain\UploadRequest\Controllers\CreateFolderController;
|
||||
use Domain\UploadRequest\Controllers\DeleteFileOrFolderController;
|
||||
use Domain\UploadRequest\Controllers\GetFolderTreeForUploadRequestController;
|
||||
use Domain\UploadRequest\Controllers\MoveItemInUploadRequestController;
|
||||
use Tests\Domain\UploadRequest\RenameFileOrFolderController;
|
||||
use Domain\UploadRequest\Controllers\GetUploadRequestController;
|
||||
use Domain\UploadRequest\Controllers\CreateUploadRequestController;
|
||||
use Domain\UploadRequest\Controllers\SetUploadRequestAsFilledController;
|
||||
use Domain\UploadRequest\Controllers\UploadFilesForUploadRequestController;
|
||||
|
||||
Route::get('/{uploadRequest}', GetUploadRequestController::class);
|
||||
Route::delete('/{uploadRequest}', SetUploadRequestAsFilledController::class);
|
||||
Route::post('/{uploadRequest}/upload', UploadFilesForUploadRequestController::class);
|
||||
Route::group(['middleware' => 'upload-request'], function() {
|
||||
Route::get('/{uploadRequest}', GetUploadRequestController::class);
|
||||
Route::delete('/{uploadRequest}', SetUploadRequestAsFilledController::class);
|
||||
Route::post('/{uploadRequest}/upload', UploadFilesForUploadRequestController::class);
|
||||
|
||||
// Edit
|
||||
Route::patch('/{uploadRequest}/rename/{id}', RenameFileOrFolderController::class);
|
||||
Route::post('/{uploadRequest}/create-folder', CreateFolderController::class);
|
||||
Route::post('/{uploadRequest}/remove', DeleteFileOrFolderController::class);
|
||||
// Edit
|
||||
Route::patch('/{uploadRequest}/rename/{id}', RenameFileOrFolderController::class);
|
||||
Route::post('/{uploadRequest}/create-folder', CreateFolderController::class);
|
||||
Route::post('/{uploadRequest}/remove', DeleteFileOrFolderController::class);
|
||||
|
||||
Route::get('/{uploadRequest}/navigation', GetFolderTreeForUploadRequestController::class);
|
||||
// Browsing
|
||||
Route::get('/{uploadRequest}/navigation', GetFolderTreeForUploadRequestController::class);
|
||||
Route::post('/{uploadRequest}/move', MoveItemInUploadRequestController::class);
|
||||
});
|
||||
|
||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||
Route::post('/', CreateUploadRequestController::class);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
namespace App\Http;
|
||||
|
||||
use Domain\UploadRequest\Middleware\ProtectUploadRequestRoutes;
|
||||
use Fruitcake\Cors\HandleCors;
|
||||
use Support\Middleware\TrimStrings;
|
||||
use Support\Middleware\TrustProxies;
|
||||
@@ -75,5 +76,6 @@ class Kernel extends HttpKernel
|
||||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'setup-wizard' => ProtectSetupWizardRoutes::class,
|
||||
'upload-request' => ProtectUploadRequestRoutes::class,
|
||||
];
|
||||
}
|
||||
|
||||
@@ -19,11 +19,6 @@ class CreateFolderController
|
||||
|
||||
public function __invoke(CreateFolderRequest $request, UploadRequest $uploadRequest)
|
||||
{
|
||||
// Check if upload request is active
|
||||
if ($uploadRequest->status !== 'active') {
|
||||
return response('Gone', 410);
|
||||
}
|
||||
|
||||
// Check privileges
|
||||
if (! in_array($request->input('parent_id'), getChildrenFolderIds($uploadRequest->id))) {
|
||||
return response('Access Denied', 403);
|
||||
|
||||
@@ -7,18 +7,12 @@ use Domain\Folders\Models\Folder;
|
||||
use Domain\Items\Requests\DeleteItemRequest;
|
||||
use Domain\UploadRequest\Models\UploadRequest;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
|
||||
class DeleteFileOrFolderController
|
||||
{
|
||||
public function __invoke(DeleteItemRequest $request, UploadRequest $uploadRequest)
|
||||
{
|
||||
// Check if upload request is active
|
||||
if ($uploadRequest->status !== 'active') {
|
||||
return response('Gone', 410);
|
||||
}
|
||||
|
||||
foreach ($request->input('items') as $file) {
|
||||
// Get file or folder item
|
||||
$item = get_item($file['type'], $file['id']);
|
||||
|
||||
@@ -5,16 +5,14 @@ namespace Domain\UploadRequest\Controllers;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Folders\Models\Folder;
|
||||
use Domain\UploadRequest\Models\UploadRequest;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use Illuminate\Http\Response;
|
||||
|
||||
class GetFolderTreeForUploadRequestController extends Controller
|
||||
{
|
||||
public function __invoke(UploadRequest $uploadRequest)
|
||||
public function __invoke(UploadRequest $uploadRequest): Application|ResponseFactory|Response|array
|
||||
{
|
||||
// Check if upload request is active
|
||||
if ($uploadRequest->status !== 'active') {
|
||||
return response('Gone', 410);
|
||||
}
|
||||
|
||||
// Get folders
|
||||
$folders = Folder::with('folders:id,parent_id,name')
|
||||
->whereParentId($uploadRequest->id)
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace Domain\UploadRequest\Controllers;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Domain\Items\Requests\MoveItemRequest;
|
||||
use Domain\UploadRequest\Models\UploadRequest;
|
||||
|
||||
class MoveItemInUploadRequestController extends Controller
|
||||
{
|
||||
public function __invoke(
|
||||
MoveItemRequest $request,
|
||||
UploadRequest $uploadRequest,
|
||||
) {
|
||||
foreach ($request->input('items') as $item) {
|
||||
$item = get_item($item['type'], $item['id']);
|
||||
|
||||
// Check privileges
|
||||
if (! in_array($item['parent_id'], getChildrenFolderIds($uploadRequest->id))) {
|
||||
return response('Access Denied', 403);
|
||||
}
|
||||
|
||||
$item->update(['parent_id' => $request->input('to_id')]);
|
||||
}
|
||||
|
||||
return response('Done.', 204);
|
||||
}
|
||||
}
|
||||
@@ -21,11 +21,6 @@ class UploadFilesForUploadRequestController
|
||||
*/
|
||||
public function __invoke(\Domain\Files\Requests\UploadRequest $request, UploadRequest $uploadRequest)
|
||||
{
|
||||
// Check if upload request is active
|
||||
if ($uploadRequest->status !== 'active') {
|
||||
return response('Gone', 410);
|
||||
}
|
||||
|
||||
// Get upload request root folder query
|
||||
$folder = Folder::where('id', $uploadRequest->id);
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
namespace Domain\UploadRequest\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ProtectUploadRequestRoutes
|
||||
{
|
||||
/**
|
||||
* Prevent access for setup wizard controllers after initial app installation.
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): mixed
|
||||
{
|
||||
// Check if upload request is active
|
||||
if ($request->route()->parameter('uploadRequest')->status !== 'active') {
|
||||
return response('Gone', 410);
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
@@ -289,4 +289,48 @@ class UploadRequestEditingTest extends TestCase
|
||||
// Assert primary file was deleted
|
||||
Storage::assertMissing("files/$user->id/fake-file.pdf");
|
||||
}
|
||||
|
||||
/**
|
||||
* @test
|
||||
*/
|
||||
public function it_move_file_to_another_folder_in_upload_request()
|
||||
{
|
||||
$user = User::factory()
|
||||
->hasSettings()
|
||||
->create();
|
||||
|
||||
$uploadRequest = UploadRequest::factory()
|
||||
->create([
|
||||
'status' => 'active',
|
||||
'user_id' => $user->id,
|
||||
]);
|
||||
|
||||
$folder = Folder::factory()
|
||||
->create([
|
||||
'id' => $uploadRequest->id,
|
||||
'user_id' => $user->id,
|
||||
]);
|
||||
|
||||
$file = File::factory()
|
||||
->create([
|
||||
'parent_id' => $uploadRequest->id,
|
||||
'user_id' => $user->id,
|
||||
]);
|
||||
|
||||
$this
|
||||
->postJson("/api/upload-request/$uploadRequest->id/move", [
|
||||
'to_id' => $folder->id,
|
||||
'items' => [
|
||||
[
|
||||
'type' => 'file',
|
||||
'id' => $file->id,
|
||||
],
|
||||
],
|
||||
])->assertStatus(204);
|
||||
|
||||
$this->assertDatabaseHas('files', [
|
||||
'id' => $file->id,
|
||||
'parent_id' => $folder->id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user