added guest_get_navigator_tree test

This commit is contained in:
Peter Papp
2021-03-10 17:22:40 +01:00
parent ff4af2978d
commit ed90173ec9
2 changed files with 105 additions and 17 deletions
@@ -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");
} }
+89
View File
@@ -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" => []
]
]
]
]);
}
} }