mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-05-26 14:34:42 +00:00
added guest_get_navigator_tree test
This commit is contained in:
@@ -34,11 +34,11 @@ class FileSharingController extends Controller
|
|||||||
$shared = Share::whereToken($token)
|
$shared = Share::whereToken($token)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if (! $shared) {
|
if (!$shared) {
|
||||||
return response()
|
return response()
|
||||||
->view('index', [
|
->view('index', [
|
||||||
'settings' => null,
|
'settings' => null,
|
||||||
'legal' => null,
|
'legal' => null,
|
||||||
'installation' => null,
|
'installation' => null,
|
||||||
], 404);
|
], 404);
|
||||||
}
|
}
|
||||||
@@ -47,14 +47,14 @@ class FileSharingController extends Controller
|
|||||||
Cookie::queue('shared_access_token', '', -1);
|
Cookie::queue('shared_access_token', '', -1);
|
||||||
|
|
||||||
// Set cookies
|
// Set cookies
|
||||||
if ((int) $shared->is_protected) {
|
if ((int)$shared->is_protected) {
|
||||||
|
|
||||||
// Set shared token
|
// Set shared token
|
||||||
Cookie::queue('shared_token', $token, 43200);
|
Cookie::queue('shared_token', $token, 43200);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if shared is image file and then show it
|
// Check if shared is image file and then show it
|
||||||
if ($shared->type === 'file' && ! (int) $shared->is_protected) {
|
if ($shared->type === 'file' && !(int)$shared->is_protected) {
|
||||||
|
|
||||||
$image = File::where('user_id', $shared->user_id)
|
$image = File::where('user_id', $shared->user_id)
|
||||||
->where('type', 'image')
|
->where('type', 'image')
|
||||||
@@ -64,7 +64,7 @@ class FileSharingController extends Controller
|
|||||||
if ($image) {
|
if ($image) {
|
||||||
|
|
||||||
// Store user download size
|
// Store user download size
|
||||||
User::find($shared->user_id)->record_download((int) $image->getRawOriginal('filesize'));
|
User::find($shared->user_id)->record_download((int)$image->getRawOriginal('filesize'));
|
||||||
|
|
||||||
return $this->show_image($image);
|
return $this->show_image($image);
|
||||||
}
|
}
|
||||||
@@ -173,7 +173,7 @@ class FileSharingController extends Controller
|
|||||||
$shared = get_shared($token);
|
$shared = get_shared($token);
|
||||||
|
|
||||||
// Abort if folder is protected
|
// Abort if folder is protected
|
||||||
if ((int) $shared->is_protected) {
|
if ((int)$shared->is_protected) {
|
||||||
abort(403, "Sorry, you don't have permission");
|
abort(403, "Sorry, you don't have permission");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,7 +205,7 @@ class FileSharingController extends Controller
|
|||||||
->firstOrFail();
|
->firstOrFail();
|
||||||
|
|
||||||
// Abort if file is protected
|
// Abort if file is protected
|
||||||
if ((int) $shared->is_protected) {
|
if ((int)$shared->is_protected) {
|
||||||
abort(403, "Sorry, you don't have permission");
|
abort(403, "Sorry, you don't have permission");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -278,25 +278,24 @@ class FileSharingController extends Controller
|
|||||||
public function get_public_navigation_tree($token)
|
public function get_public_navigation_tree($token)
|
||||||
{
|
{
|
||||||
// Get sharing record
|
// Get sharing record
|
||||||
$shared = Share::where('token', $token)->firstOrFail();
|
$shared = get_shared($token);
|
||||||
|
|
||||||
// Check if user can get directory
|
// Check if user can get directory
|
||||||
Guardian::check_item_access($shared->item_id, $shared);
|
Guardian::check_item_access($shared->item_id, $shared);
|
||||||
|
|
||||||
// Get folders
|
// Get folders
|
||||||
$folders = Folder::with('folders:id,parent_id,unique_id,name')
|
$folders = Folder::with('folders:id,parent_id,name')
|
||||||
->where('parent_id', $shared->item_id)
|
->where('parent_id', $shared->item_id)
|
||||||
->where('user_id', $shared->user_id)
|
->where('user_id', $shared->user_id)
|
||||||
->sortable()
|
->sortable()
|
||||||
->get(['id', 'parent_id', 'unique_id', 'name']);
|
->get(['id', 'parent_id', 'id', 'name']);
|
||||||
|
|
||||||
// Return folder tree
|
|
||||||
return [
|
return [
|
||||||
[
|
[
|
||||||
'unique_id' => $shared->item_id,
|
'id' => $shared->item_id,
|
||||||
'name' => __('vuefilemanager.home'),
|
'name' => __('vuefilemanager.home'),
|
||||||
'location' => 'public',
|
'location' => 'public',
|
||||||
'folders' => $folders,
|
'folders' => $folders,
|
||||||
]
|
]
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -357,7 +356,7 @@ class FileSharingController extends Controller
|
|||||||
$shared = get_shared($token);
|
$shared = get_shared($token);
|
||||||
|
|
||||||
// Abort if folder is protected
|
// Abort if folder is protected
|
||||||
if ((int) $shared->is_protected) {
|
if ((int)$shared->is_protected) {
|
||||||
abort(403, "Sorry, you don't have permission");
|
abort(403, "Sorry, you don't have permission");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -596,4 +596,93 @@ class ShareEditorTest extends TestCase
|
|||||||
]
|
]
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function guest_get_navigator_tree()
|
||||||
|
{
|
||||||
|
$user = User::factory(User::class)
|
||||||
|
->create();
|
||||||
|
|
||||||
|
$folder_level_1 = Folder::factory(Folder::class)
|
||||||
|
->create([
|
||||||
|
'name' => 'level 1',
|
||||||
|
'user_scope' => 'master',
|
||||||
|
'user_id' => $user->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$share = Share::factory(Share::class)
|
||||||
|
->create([
|
||||||
|
'item_id' => $folder_level_1->id,
|
||||||
|
'user_id' => $user->id,
|
||||||
|
'type' => 'folder',
|
||||||
|
'is_protected' => false,
|
||||||
|
'permission' => 'editor',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$folder_level_2 = Folder::factory(Folder::class)
|
||||||
|
->create([
|
||||||
|
'name' => 'level 2',
|
||||||
|
'parent_id' => $folder_level_1->id,
|
||||||
|
'user_scope' => 'master',
|
||||||
|
'user_id' => $user->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$folder_level_3 = Folder::factory(Folder::class)
|
||||||
|
->create([
|
||||||
|
'name' => 'level 3',
|
||||||
|
'parent_id' => $folder_level_2->id,
|
||||||
|
'user_scope' => 'master',
|
||||||
|
'user_id' => $user->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$folder_level_2_sibling = Folder::factory(Folder::class)
|
||||||
|
->create([
|
||||||
|
'name' => 'level 2 Sibling',
|
||||||
|
'parent_id' => $folder_level_1->id,
|
||||||
|
'user_scope' => 'master',
|
||||||
|
'user_id' => $user->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$this->getJson("/api/browse/navigation/public/$share->token")
|
||||||
|
->assertStatus(200)
|
||||||
|
->assertExactJson([
|
||||||
|
[
|
||||||
|
'id' => $share->item_id,
|
||||||
|
"name" => "Home",
|
||||||
|
"location" => "public",
|
||||||
|
"folders" => [
|
||||||
|
[
|
||||||
|
"id" => $folder_level_2->id,
|
||||||
|
"parent_id" => $folder_level_1->id,
|
||||||
|
"name" => "level 2",
|
||||||
|
"items" => 1,
|
||||||
|
"trashed_items" => 1,
|
||||||
|
"type" => "folder",
|
||||||
|
"folders" => [
|
||||||
|
[
|
||||||
|
"id" => $folder_level_3->id,
|
||||||
|
"parent_id" => $folder_level_2->id,
|
||||||
|
"name" => "level 3",
|
||||||
|
"items" => 0,
|
||||||
|
"trashed_items" => 0,
|
||||||
|
"type" => "folder",
|
||||||
|
"folders" => [],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"id" => $folder_level_2_sibling->id,
|
||||||
|
"parent_id" => $folder_level_1->id,
|
||||||
|
"name" => "level 2 Sibling",
|
||||||
|
"items" => 0,
|
||||||
|
"trashed_items" => 0,
|
||||||
|
"type" => "folder",
|
||||||
|
"folders" => []
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user