mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
sharing route refactoring
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
APP_NAME=Laravel
|
||||
APP_ENV=local
|
||||
APP_KEY=base64:z6k1PzCZHXgOlUdNwFJzjKtyxIy8Qczl3POYpk3O94A=
|
||||
APP_KEY=base64:x5KqtYx90b6qdRZ0tzl1LunUYNlu6uXZATY3oKTMn1M=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
APP_DEMO=false
|
||||
|
||||
2
resources/js/store/modules/sharing.js
vendored
2
resources/js/store/modules/sharing.js
vendored
@@ -50,7 +50,7 @@ const actions = {
|
||||
getShareDetail: ({ commit, state }, token) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.get(`/api/sharing/share/${token}`)
|
||||
.get(`/api/sharing/${token}`)
|
||||
.then((response) => {
|
||||
resolve(response)
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
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;
|
||||
@@ -32,7 +33,7 @@ Route::post('/authenticate/{shared}', VisitorUnlockLockedShareController::class)
|
||||
Route::get('/navigation/{shared}', VisitorNavigationFolderTreeController::class);
|
||||
Route::get('/folders/{id}/{shared}', VisitorBrowseFolderController::class);
|
||||
Route::get('/file/{shared}', VisitorShowFileController::class);
|
||||
Route::get('/share/{share}', [ShareController::class, 'show']);
|
||||
Route::get('/{share}', [ShareController::class, 'show']);
|
||||
|
||||
// Others
|
||||
Route::get('/search/{shared}', VisitorSearchFilesAndFoldersController::class);
|
||||
|
||||
73
src/Domain/Files/Controllers/VisitorUploadFileController.php
Normal file
73
src/Domain/Files/Controllers/VisitorUploadFileController.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?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);
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ class VisitorBrowseTest extends TestCase
|
||||
'is_protected' => 0,
|
||||
]);
|
||||
|
||||
$this->get("/api/browse/share/$share->token")
|
||||
$this->get("/api/sharing/$share->token")
|
||||
->assertStatus(200)
|
||||
->assertExactJson([
|
||||
'data' => [
|
||||
@@ -63,7 +63,7 @@ class VisitorBrowseTest extends TestCase
|
||||
*/
|
||||
public function it_try_to_get_deleted_share_record()
|
||||
{
|
||||
$this->get('/api/browse/share/19ZMPNiass4ZqWwQ')
|
||||
$this->get('/api/sharing/19ZMPNiass4ZqWwQ')
|
||||
->assertNotFound();
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ class VisitorBrowseTest extends TestCase
|
||||
|
||||
$this
|
||||
->withUnencryptedCookies($cookie)
|
||||
->get("/api/browse/folders/$root->id/$share->token")
|
||||
->get("/api/sharing/folders/$root->id/$share->token")
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
'id' => $file->id,
|
||||
@@ -192,7 +192,7 @@ class VisitorBrowseTest extends TestCase
|
||||
|
||||
// Check public shared item
|
||||
if (! $is_protected) {
|
||||
$this->getJson("/api/browse/folders/$root->id/$share->token")
|
||||
$this->getJson("/api/sharing/folders/$root->id/$share->token")
|
||||
->assertStatus(200)
|
||||
->assertJsonFragment([
|
||||
'id' => $file->id,
|
||||
|
||||
@@ -89,7 +89,7 @@ class SharedZippingTest extends TestCase
|
||||
|
||||
$this
|
||||
->withUnencryptedCookies($cookie)
|
||||
->get("/api/zip/{$share->token}?items=$files[0]|file,$files[1]|file,$folder->id|folder")
|
||||
->get("/api/sharing/zip/{$share->token}?items=$files[0]|file,$files[1]|file,$folder->id|folder")
|
||||
->assertStatus(200)
|
||||
->assertHeader('content-type', 'application/x-zip');
|
||||
}
|
||||
@@ -97,7 +97,7 @@ class SharedZippingTest extends TestCase
|
||||
// Check public shared item
|
||||
if (! $is_protected) {
|
||||
$this
|
||||
->get("/api/zip/{$share->token}?items=$files[0]|file,$files[1]|file,$folder->id|folder")
|
||||
->get("/api/sharing/zip/{$share->token}?items=$files[0]|file,$files[1]|file,$folder->id|folder")
|
||||
->assertStatus(200)
|
||||
->assertHeader('content-type', 'application/x-zip');
|
||||
}
|
||||
@@ -152,14 +152,14 @@ class SharedZippingTest extends TestCase
|
||||
|
||||
$this
|
||||
->withUnencryptedCookies($cookie)
|
||||
->get("/api/zip/$share->token?items=$files[0]|file,$files[1]|file")
|
||||
->get("/api/sharing/zip/$share->token?items=$files[0]|file,$files[1]|file")
|
||||
->assertStatus(403);
|
||||
}
|
||||
|
||||
// Check public shared item
|
||||
if (! $is_protected) {
|
||||
$this
|
||||
->get("/api/zip/$share->token?items=$files[0]|file,$files[1]|file")
|
||||
->get("/api/sharing/zip/$share->token?items=$files[0]|file,$files[1]|file")
|
||||
->assertStatus(403);
|
||||
}
|
||||
|
||||
@@ -267,13 +267,13 @@ class SharedZippingTest extends TestCase
|
||||
|
||||
$this
|
||||
->withUnencryptedCookies($cookie)
|
||||
->get("/api/zip/$share->token?items=$folder->id|folder")
|
||||
->get("/api/sharing/zip/$share->token?items=$folder->id|folder")
|
||||
->assertStatus(403);
|
||||
}
|
||||
|
||||
// Check public shared item
|
||||
if (! $is_protected) {
|
||||
$this->getJson("/api/zip/$share->token?items=$folder->id|folder")
|
||||
$this->getJson("/api/sharing/zip/$share->token?items=$folder->id|folder")
|
||||
->assertStatus(403);
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user