mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-18 16:22:14 +00:00
divisive public and private browsing controller
This commit is contained in:
@@ -1,7 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers\App;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Mail\SendContactMessage;
|
use App\Http\Mail\SendContactMessage;
|
||||||
use App\Http\Resources\PricingCollection;
|
use App\Http\Resources\PricingCollection;
|
||||||
use App\Http\Requests\PublicPages\SendContactMessageRequest;
|
use App\Http\Requests\PublicPages\SendContactMessageRequest;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Setup;
|
namespace App\Http\Controllers\App;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Artisan;
|
use Artisan;
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Setup;
|
namespace App\Http\Controllers\App;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\SetupWizard\CreateAdminRequest;
|
use App\Http\Requests\SetupWizard\CreateAdminRequest;
|
||||||
@@ -38,7 +38,7 @@ class EditItemsController extends Controller
|
|||||||
* @return array
|
* @return array
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function user_create_folder(CreateFolderRequest $request)
|
public function create_folder(CreateFolderRequest $request)
|
||||||
{
|
{
|
||||||
// Demo preview
|
// Demo preview
|
||||||
if (is_demo(Auth::id())) {
|
if (is_demo(Auth::id())) {
|
||||||
@@ -62,33 +62,6 @@ class EditItemsController extends Controller
|
|||||||
return $this->filemanager->create_folder($request);
|
return $this->filemanager->create_folder($request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Create new folder for guest user with edit permission
|
|
||||||
*
|
|
||||||
* @param CreateFolderRequest $request
|
|
||||||
* @param $token
|
|
||||||
* @return array
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function guest_create_folder(CreateFolderRequest $request, $token)
|
|
||||||
{
|
|
||||||
// Get shared record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
if (is_demo($shared->user_id)) {
|
|
||||||
return Demo::create_folder($request);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check shared permission
|
|
||||||
if (!is_editor($shared)) abort(403);
|
|
||||||
|
|
||||||
// Check access to requested directory
|
|
||||||
$this->helper->check_item_access($request->parent_id, $shared);
|
|
||||||
|
|
||||||
// Create folder
|
|
||||||
return $this->filemanager->create_folder($request, $shared);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Rename item for authenticated master|editor user
|
* Rename item for authenticated master|editor user
|
||||||
*
|
*
|
||||||
@@ -97,7 +70,7 @@ class EditItemsController extends Controller
|
|||||||
* @return mixed
|
* @return mixed
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function user_rename_item(RenameItemRequest $request, $id)
|
public function rename_item(RenameItemRequest $request, $id)
|
||||||
{
|
{
|
||||||
// Demo preview
|
// Demo preview
|
||||||
if (is_demo(Auth::id())) {
|
if (is_demo(Auth::id())) {
|
||||||
@@ -133,56 +106,6 @@ class EditItemsController extends Controller
|
|||||||
return $this->filemanager->rename_item($request, $id);
|
return $this->filemanager->rename_item($request, $id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Rename item for guest user with edit permission
|
|
||||||
*
|
|
||||||
* @param RenameItemRequest $request
|
|
||||||
* @param $id
|
|
||||||
* @param $token
|
|
||||||
* @return mixed
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function guest_rename_item(RenameItemRequest $request, $id, $token)
|
|
||||||
{
|
|
||||||
// Get shared record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Demo preview
|
|
||||||
if (is_demo($shared->user_id)) {
|
|
||||||
return Demo::rename_item($request, $id);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check shared permission
|
|
||||||
if (is_visitor($shared)) {
|
|
||||||
abort(403);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get file|folder item
|
|
||||||
$item = get_item($request->type, $id);
|
|
||||||
|
|
||||||
// Check access to requested item
|
|
||||||
if ($request->type === 'folder') {
|
|
||||||
$this->helper->check_item_access($item->id, $shared);
|
|
||||||
} else {
|
|
||||||
$this->helper->check_item_access($item->folder_id, $shared);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If request have a change folder icon values set the folder icon
|
|
||||||
if ($request->type === 'folder' && $request->filled('icon')) {
|
|
||||||
$this->filemanager->set_folder_icon($request, $id);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rename item
|
|
||||||
$item = $this->filemanager->rename_item($request, $id, $shared);
|
|
||||||
|
|
||||||
// Set public url
|
|
||||||
if ($item->type !== 'folder') {
|
|
||||||
$item->setPublicUrl($token);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $item;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete item for authenticated master|editor user
|
* Delete item for authenticated master|editor user
|
||||||
*
|
*
|
||||||
@@ -191,7 +114,7 @@ class EditItemsController extends Controller
|
|||||||
* @return ResponseFactory|\Illuminate\Http\Response
|
* @return ResponseFactory|\Illuminate\Http\Response
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function user_delete_item(DeleteItemRequest $request)
|
public function delete_item(DeleteItemRequest $request)
|
||||||
{
|
{
|
||||||
// Demo preview
|
// Demo preview
|
||||||
if (is_demo(Auth::id())) {
|
if (is_demo(Auth::id())) {
|
||||||
@@ -230,49 +153,6 @@ class EditItemsController extends Controller
|
|||||||
return response(null, 204);
|
return response(null, 204);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Delete item for guest user with edit permission
|
|
||||||
*
|
|
||||||
* @param DeleteItemRequest $request
|
|
||||||
* @param $id
|
|
||||||
* @param $token
|
|
||||||
* @return ResponseFactory|\Illuminate\Http\Response
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function guest_delete_item(DeleteItemRequest $request, $token)
|
|
||||||
{
|
|
||||||
// Get shared record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Demo preview
|
|
||||||
if (is_demo($shared->user_id)) {
|
|
||||||
return Demo::response_204();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check shared permission
|
|
||||||
if (is_visitor($shared)) {
|
|
||||||
abort(403);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($request->items as $file) {
|
|
||||||
|
|
||||||
// Get file|folder item
|
|
||||||
$item = get_item($file['type'], $file['id']);
|
|
||||||
|
|
||||||
// Check access to requested item
|
|
||||||
if ($file['type'] === 'folder') {
|
|
||||||
$this->helper->check_item_access($item->id, $shared);
|
|
||||||
} else {
|
|
||||||
$this->helper->check_item_access($item->folder_id, $shared);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Delete item
|
|
||||||
$this->filemanager->delete_item($file, $file['id'], $shared);
|
|
||||||
}
|
|
||||||
// Return response
|
|
||||||
return response('Done', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Upload file for authenticated master|editor user
|
* Upload file for authenticated master|editor user
|
||||||
*
|
*
|
||||||
@@ -280,7 +160,7 @@ class EditItemsController extends Controller
|
|||||||
* @return File|Model
|
* @return File|Model
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public function user_upload(UploadRequest $request)
|
public function upload(UploadRequest $request)
|
||||||
{
|
{
|
||||||
// Demo preview
|
// Demo preview
|
||||||
if (is_demo(Auth::id())) {
|
if (is_demo(Auth::id())) {
|
||||||
@@ -305,48 +185,47 @@ class EditItemsController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete file for guest user with edit permission
|
* Move item for authenticated master|editor user
|
||||||
*
|
*
|
||||||
* @param UploadRequest $request
|
* @param MoveItemRequest $request
|
||||||
* @param $token
|
* @param $id
|
||||||
* @return File|Model
|
* @return ResponseFactory|\Illuminate\Http\Response
|
||||||
* @throws Exception
|
|
||||||
*/
|
*/
|
||||||
public function guest_upload(UploadRequest $request, $token)
|
public function move(MoveItemRequest $request)
|
||||||
{
|
{
|
||||||
// Get shared record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Demo preview
|
// Demo preview
|
||||||
if (is_demo($shared->user_id)) {
|
if (is_demo(Auth::id())) {
|
||||||
return Demo::upload($request);
|
return Demo::response_204();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check shared permission
|
$to_id = $request->input('to_id');
|
||||||
if (is_visitor($shared)) {
|
|
||||||
abort(403);
|
// Check permission to upload for authenticated editor
|
||||||
|
if ($request->user()->tokenCan('editor')) {
|
||||||
|
|
||||||
|
// check if shared_token cookie exist
|
||||||
|
if (!$request->hasCookie('shared_token')) abort('401');
|
||||||
|
|
||||||
|
// Get shared token
|
||||||
|
$shared = get_shared($request->cookie('shared_token'));
|
||||||
|
|
||||||
|
// Check access to requested directory
|
||||||
|
$this->helper->check_item_access($to_id, $shared);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check access to requested directory
|
// Move item
|
||||||
$this->helper->check_item_access($request->folder_id, $shared);
|
$this->filemanager->move($request, $to_id);
|
||||||
|
|
||||||
// Return new uploaded file
|
return response('Done!', 204);
|
||||||
$new_file = $this->filemanager->upload($request, $shared);
|
|
||||||
|
|
||||||
// Set public access url
|
|
||||||
$new_file->setPublicUrl($token);
|
|
||||||
|
|
||||||
return $new_file;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User download folder via zip
|
* User download folder via zip
|
||||||
*
|
*
|
||||||
* @param $id
|
* @param $id
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function user_zip_folder(Request $request, $id)
|
public function zip_folder(Request $request, $id)
|
||||||
{
|
{
|
||||||
// Get user id
|
// Get user id
|
||||||
$user_id = Auth::id();
|
$user_id = Auth::id();
|
||||||
@@ -381,49 +260,13 @@ class EditItemsController extends Controller
|
|||||||
], 201);
|
], 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Guest download folder via zip
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @param $id
|
|
||||||
* @param $token
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function guest_zip_folder($id, $token)
|
|
||||||
{
|
|
||||||
// Get shared record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Check access to requested folder
|
|
||||||
$this->helper->check_item_access($id, $shared);
|
|
||||||
|
|
||||||
// Get folder
|
|
||||||
$folder = Folder::whereUserId($shared->user_id)
|
|
||||||
->where('id', $id);
|
|
||||||
|
|
||||||
if (!$folder->exists()) {
|
|
||||||
abort(404, 'Requested folder doesn\'t exists.');
|
|
||||||
}
|
|
||||||
|
|
||||||
$zip = $this->filemanager->zip_folder($id, $shared);
|
|
||||||
|
|
||||||
// Get file
|
|
||||||
return response([
|
|
||||||
'url' => route('zip_public', [
|
|
||||||
'id' => $zip->id,
|
|
||||||
'token' => $shared->token,
|
|
||||||
]),
|
|
||||||
'name' => $zip->basename,
|
|
||||||
], 201);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* User download multiple files via zip
|
* User download multiple files via zip
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function user_zip_multiple_files(Request $request)
|
public function zip_multiple_files(Request $request)
|
||||||
{
|
{
|
||||||
// Check permission to upload for authenticated editor
|
// Check permission to upload for authenticated editor
|
||||||
if ($request->user()->tokenCan('editor')) {
|
if ($request->user()->tokenCan('editor')) {
|
||||||
@@ -457,126 +300,4 @@ class EditItemsController extends Controller
|
|||||||
'name' => $zip->basename,
|
'name' => $zip->basename,
|
||||||
], 201);
|
], 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Guest download multiple files via zip
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @param $token
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function guest_zip_multiple_files(Request $request, $token)
|
|
||||||
{
|
|
||||||
// Get shared record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
$file_parent_folders = File::whereUserId($shared->user_id)
|
|
||||||
->whereIn('id', $request->items)
|
|
||||||
->get()
|
|
||||||
->pluck('folder_id')
|
|
||||||
->toArray();
|
|
||||||
|
|
||||||
// Check access to requested directory
|
|
||||||
$this->helper->check_item_access($file_parent_folders, $shared);
|
|
||||||
|
|
||||||
// Get requested files
|
|
||||||
$files = File::whereUserId($shared->user_id)
|
|
||||||
->whereIn('id', $request->items)
|
|
||||||
->get();
|
|
||||||
|
|
||||||
$zip = $this->filemanager->zip_files($files, $shared);
|
|
||||||
|
|
||||||
// Get file
|
|
||||||
return response([
|
|
||||||
'url' => route('zip_public', [
|
|
||||||
'id' => $zip->id,
|
|
||||||
'token' => $shared->token,
|
|
||||||
]),
|
|
||||||
'name' => $zip->basename,
|
|
||||||
], 201);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Move item for authenticated master|editor user
|
|
||||||
*
|
|
||||||
* @param MoveItemRequest $request
|
|
||||||
* @param $id
|
|
||||||
* @return ResponseFactory|\Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function user_move(MoveItemRequest $request)
|
|
||||||
{
|
|
||||||
// Demo preview
|
|
||||||
if (is_demo(Auth::id())) {
|
|
||||||
return Demo::response_204();
|
|
||||||
}
|
|
||||||
|
|
||||||
$to_id = $request->input('to_id');
|
|
||||||
|
|
||||||
// Check permission to upload for authenticated editor
|
|
||||||
if ($request->user()->tokenCan('editor')) {
|
|
||||||
|
|
||||||
// check if shared_token cookie exist
|
|
||||||
if (!$request->hasCookie('shared_token')) abort('401');
|
|
||||||
|
|
||||||
// Get shared token
|
|
||||||
$shared = get_shared($request->cookie('shared_token'));
|
|
||||||
|
|
||||||
// Check access to requested directory
|
|
||||||
$this->helper->check_item_access($to_id, $shared);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Move item
|
|
||||||
$this->filemanager->move($request, $to_id);
|
|
||||||
|
|
||||||
return response('Done!', 204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Move item for guest user with edit permission
|
|
||||||
*
|
|
||||||
* @param MoveItemRequest $request
|
|
||||||
* @param $id
|
|
||||||
* @param $token
|
|
||||||
* @return ResponseFactory|\Illuminate\Http\Response
|
|
||||||
*/
|
|
||||||
public function guest_move(MoveItemRequest $request, $token)
|
|
||||||
{
|
|
||||||
// Get shared record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Demo preview
|
|
||||||
if (is_demo(Auth::id())) {
|
|
||||||
return Demo::response_204();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check shared permission
|
|
||||||
if (is_visitor($shared)) {
|
|
||||||
abort(403);
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($request->items as $item) {
|
|
||||||
|
|
||||||
if ($item['type'] === 'folder') {
|
|
||||||
|
|
||||||
$this->helper->check_item_access([
|
|
||||||
$request->to_id, $item['id']
|
|
||||||
], $shared);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($item['type'] !== 'folder') {
|
|
||||||
|
|
||||||
$file = File::where('id', $item['id'])
|
|
||||||
->where('user_id', $shared->user_id)
|
|
||||||
->firstOrFail();
|
|
||||||
|
|
||||||
$this->helper->check_item_access([
|
|
||||||
$request->to_id, $file->folder_id
|
|
||||||
], $shared);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->filemanager->move($request, $request->to_id);
|
|
||||||
|
|
||||||
return response('Done!', 204);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers\FileManager;
|
||||||
|
|
||||||
use App\Models\User;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Zip;
|
use App\Models\Zip;
|
||||||
use App\Services\HelperService;
|
use App\Services\HelperService;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Illuminate\Support\Facades\File;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\File as UserFile;
|
use App\Models\File as UserFile;
|
||||||
use Illuminate\Support\Facades\Storage;
|
use Illuminate\Support\Facades\Storage;
|
||||||
159
app/Http/Controllers/Sharing/BrowseShareController.php
Normal file
159
app/Http/Controllers/Sharing/BrowseShareController.php
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Sharing;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\File;
|
||||||
|
use App\Models\Folder;
|
||||||
|
use App\Services\HelperService;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Arr;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
class BrowseShareController extends Controller
|
||||||
|
{
|
||||||
|
private $helper;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->helper = resolve(HelperService::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get folders and files
|
||||||
|
*
|
||||||
|
* @param $id
|
||||||
|
* @param $shared
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function get_items($id, $shared): array
|
||||||
|
{
|
||||||
|
$folders = Folder::where('user_id', $shared->user_id)
|
||||||
|
->where('parent_id', $id)
|
||||||
|
->sortable()
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$files = File::where('user_id', $shared->user_id)
|
||||||
|
->where('folder_id', $id)
|
||||||
|
->sortable()
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return [$folders, $files];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Search public files
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
* @param $token
|
||||||
|
* @return Collection
|
||||||
|
*/
|
||||||
|
public function search_public(Request $request, $token)
|
||||||
|
{
|
||||||
|
// Get shared
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Abort if folder is protected
|
||||||
|
if ((int)$shared->is_protected) {
|
||||||
|
abort(403, "Sorry, you don't have permission");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search files id db
|
||||||
|
$searched_files = File::search($request->input('query'))
|
||||||
|
->where('user_id', $shared->user_id)
|
||||||
|
->get();
|
||||||
|
$searched_folders = Folder::search($request->input('query'))
|
||||||
|
->where('user_id', $shared->user_id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Get all children content
|
||||||
|
$foldersIds = Folder::with('folders:id,parent_id,unique_id,name')
|
||||||
|
->where('user_id', $shared->user_id)
|
||||||
|
->where('parent_id', $shared->item_id)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
// Get accessible folders
|
||||||
|
$accessible_folder_ids = Arr::flatten([filter_folders_ids($foldersIds), $shared->item_id]);
|
||||||
|
|
||||||
|
// Filter files
|
||||||
|
$files = $searched_files->filter(function ($file) use ($accessible_folder_ids, $token) {
|
||||||
|
|
||||||
|
// Set public urls
|
||||||
|
$file->setPublicUrl($token);
|
||||||
|
|
||||||
|
// check if item is in accessible folders
|
||||||
|
return in_array($file->folder_id, $accessible_folder_ids);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Filter folders
|
||||||
|
$folders = $searched_folders->filter(function ($folder) use ($accessible_folder_ids) {
|
||||||
|
|
||||||
|
// check if item is in accessible folders
|
||||||
|
return in_array($folder->unique_id, $accessible_folder_ids);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Collect folders and files to single array
|
||||||
|
return collect([$folders, $files])->collapse();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get navigation tree
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_public_navigation_tree($token)
|
||||||
|
{
|
||||||
|
// Get sharing record
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Check if user can get directory
|
||||||
|
$this->helper->check_item_access($shared->item_id, $shared);
|
||||||
|
|
||||||
|
// Get folders
|
||||||
|
$folders = Folder::with('folders:id,parent_id,name')
|
||||||
|
->where('parent_id', $shared->item_id)
|
||||||
|
->where('user_id', $shared->user_id)
|
||||||
|
->sortable()
|
||||||
|
->get(['id', 'parent_id', 'id', 'name']);
|
||||||
|
|
||||||
|
return [
|
||||||
|
[
|
||||||
|
'id' => $shared->item_id,
|
||||||
|
'name' => __('vuefilemanager.home'),
|
||||||
|
'location' => 'public',
|
||||||
|
'folders' => $folders,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Browse public folders
|
||||||
|
*
|
||||||
|
* @param $id
|
||||||
|
* @param $token
|
||||||
|
* @return Collection
|
||||||
|
*/
|
||||||
|
public function get_public_folders($id, $token)
|
||||||
|
{
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Abort if folder is protected
|
||||||
|
if ((int)$shared->is_protected) {
|
||||||
|
abort(403, "Sorry, you don't have permission");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if user can get directory
|
||||||
|
$this->helper->check_item_access($id, $shared);
|
||||||
|
|
||||||
|
// Get files and folders
|
||||||
|
list($folders, $files) = $this->get_items($id, $shared);
|
||||||
|
|
||||||
|
// Set thumbnail links for public files
|
||||||
|
$files->map(function ($item) use ($token) {
|
||||||
|
$item->setPublicUrl($token);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Collect folders and files to single array
|
||||||
|
return collect([$folders, $files])->collapse();
|
||||||
|
}
|
||||||
|
}
|
||||||
311
app/Http/Controllers/Sharing/EditShareItemsController.php
Normal file
311
app/Http/Controllers/Sharing/EditShareItemsController.php
Normal file
@@ -0,0 +1,311 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Sharing;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\FileFunctions\CreateFolderRequest;
|
||||||
|
use App\Http\Requests\FileFunctions\DeleteItemRequest;
|
||||||
|
use App\Http\Requests\FileFunctions\MoveItemRequest;
|
||||||
|
use App\Http\Requests\FileFunctions\RenameItemRequest;
|
||||||
|
use App\Http\Requests\FileFunctions\UploadRequest;
|
||||||
|
use App\Http\Tools\Demo;
|
||||||
|
use App\Models\File;
|
||||||
|
use App\Models\Folder;
|
||||||
|
use App\Services\FileManagerService;
|
||||||
|
use App\Services\HelperService;
|
||||||
|
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Auth;
|
||||||
|
|
||||||
|
class EditShareItemsController extends Controller
|
||||||
|
{
|
||||||
|
private $filemanager;
|
||||||
|
private $helper;
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->filemanager = resolve(FileManagerService::class);
|
||||||
|
$this->helper = resolve(HelperService::class);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Create new folder for guest user with edit permission
|
||||||
|
*
|
||||||
|
* @param CreateFolderRequest $request
|
||||||
|
* @param $token
|
||||||
|
* @return array|\Illuminate\Contracts\Foundation\Application|ResponseFactory|\Illuminate\Http\Response
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function create_folder(CreateFolderRequest $request, $token)
|
||||||
|
{
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
if (is_demo($shared->user_id)) {
|
||||||
|
return Demo::create_folder($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check shared permission
|
||||||
|
if (is_visitor($shared)) {
|
||||||
|
abort(403);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check access to requested directory
|
||||||
|
$this->helper->check_item_access($request->parent_id, $shared);
|
||||||
|
|
||||||
|
// Create folder
|
||||||
|
$folder = $this->filemanager->create_folder($request, $shared);
|
||||||
|
|
||||||
|
return response($folder, 201);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Rename item for guest user with edit permission
|
||||||
|
*
|
||||||
|
* @param RenameItemRequest $request
|
||||||
|
* @param $id
|
||||||
|
* @param $token
|
||||||
|
* @return mixed
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function rename_item(RenameItemRequest $request, $id, $token)
|
||||||
|
{
|
||||||
|
// Get shared record
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Demo preview
|
||||||
|
if (is_demo($shared->user_id)) {
|
||||||
|
return Demo::rename_item($request, $id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check shared permission
|
||||||
|
if (is_visitor($shared)) {
|
||||||
|
abort(403);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get file|folder item
|
||||||
|
$item = get_item($request->type, $id);
|
||||||
|
|
||||||
|
// Check access to requested item
|
||||||
|
if ($request->type === 'folder') {
|
||||||
|
$this->helper->check_item_access($item->id, $shared);
|
||||||
|
} else {
|
||||||
|
$this->helper->check_item_access($item->folder_id, $shared);
|
||||||
|
}
|
||||||
|
|
||||||
|
// If request have a change folder icon values set the folder icon
|
||||||
|
if ($request->type === 'folder' && $request->filled('icon')) {
|
||||||
|
$this->filemanager->set_folder_icon($request, $id);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Rename item
|
||||||
|
$item = $this->filemanager->rename_item($request, $id, $shared);
|
||||||
|
|
||||||
|
// Set public url
|
||||||
|
if ($item->type !== 'folder') {
|
||||||
|
$item->setPublicUrl($token);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response($item, 201);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete item for guest user with edit permission
|
||||||
|
*
|
||||||
|
* @param DeleteItemRequest $request
|
||||||
|
* @param $id
|
||||||
|
* @param $token
|
||||||
|
* @return ResponseFactory|\Illuminate\Http\Response
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function delete_item(DeleteItemRequest $request, $token)
|
||||||
|
{
|
||||||
|
// Get shared record
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Demo preview
|
||||||
|
if (is_demo($shared->user_id)) {
|
||||||
|
return Demo::response_204();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check shared permission
|
||||||
|
if (is_visitor($shared)) {
|
||||||
|
abort(403);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($request->items as $file) {
|
||||||
|
|
||||||
|
// Get file|folder item
|
||||||
|
$item = get_item($file['type'], $file['id']);
|
||||||
|
|
||||||
|
// Check access to requested item
|
||||||
|
if ($file['type'] === 'folder') {
|
||||||
|
$this->helper->check_item_access($item->id, $shared);
|
||||||
|
} else {
|
||||||
|
$this->helper->check_item_access($item->folder_id, $shared);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete item
|
||||||
|
$this->filemanager->delete_item($file, $file['id'], $shared);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response('Done', 204);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Delete file for guest user with edit permission
|
||||||
|
*
|
||||||
|
* @param UploadRequest $request
|
||||||
|
* @param $token
|
||||||
|
* @return File|\Illuminate\Contracts\Foundation\Application|ResponseFactory|Model|\Illuminate\Http\Response
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public function upload(UploadRequest $request, $token)
|
||||||
|
{
|
||||||
|
// Get shared record
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Demo preview
|
||||||
|
if (is_demo($shared->user_id)) {
|
||||||
|
return Demo::upload($request);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check shared permission
|
||||||
|
if (is_visitor($shared)) {
|
||||||
|
abort(403);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check access to requested directory
|
||||||
|
$this->helper->check_item_access($request->folder_id, $shared);
|
||||||
|
|
||||||
|
// Return new uploaded file
|
||||||
|
$new_file = $this->filemanager->upload($request, $shared);
|
||||||
|
|
||||||
|
// Set public access url
|
||||||
|
$new_file->setPublicUrl($token);
|
||||||
|
|
||||||
|
return response($new_file, 201);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Move item for guest user with edit permission
|
||||||
|
*
|
||||||
|
* @param MoveItemRequest $request
|
||||||
|
* @param $id
|
||||||
|
* @param $token
|
||||||
|
* @return ResponseFactory|\Illuminate\Http\Response
|
||||||
|
*/
|
||||||
|
public function move(MoveItemRequest $request, $token)
|
||||||
|
{
|
||||||
|
// Get shared record
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Demo preview
|
||||||
|
if (is_demo(Auth::id())) {
|
||||||
|
return Demo::response_204();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check shared permission
|
||||||
|
if (is_visitor($shared)) {
|
||||||
|
abort(403);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($request->items as $item) {
|
||||||
|
|
||||||
|
if ($item['type'] === 'folder') {
|
||||||
|
|
||||||
|
$this->helper->check_item_access([
|
||||||
|
$request->to_id, $item['id']
|
||||||
|
], $shared);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($item['type'] !== 'folder') {
|
||||||
|
|
||||||
|
$file = File::where('id', $item['id'])
|
||||||
|
->where('user_id', $shared->user_id)
|
||||||
|
->firstOrFail();
|
||||||
|
|
||||||
|
$this->helper->check_item_access([
|
||||||
|
$request->to_id, $file->folder_id
|
||||||
|
], $shared);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->filemanager->move($request, $request->to_id);
|
||||||
|
|
||||||
|
return response('Done!', 204);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Guest download folder via zip
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
* @param $id
|
||||||
|
* @param $token
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function zip_folder($id, $token)
|
||||||
|
{
|
||||||
|
// Get shared record
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
// Check access to requested folder
|
||||||
|
$this->helper->check_item_access($id, $shared);
|
||||||
|
|
||||||
|
// Get folder
|
||||||
|
$folder = Folder::whereUserId($shared->user_id)
|
||||||
|
->where('id', $id);
|
||||||
|
|
||||||
|
if (!$folder->exists()) {
|
||||||
|
abort(404, 'Requested folder doesn\'t exists.');
|
||||||
|
}
|
||||||
|
|
||||||
|
$zip = $this->filemanager->zip_folder($id, $shared);
|
||||||
|
|
||||||
|
// Get file
|
||||||
|
return response([
|
||||||
|
'url' => route('zip_public', [
|
||||||
|
'id' => $zip->id,
|
||||||
|
'token' => $shared->token,
|
||||||
|
]),
|
||||||
|
'name' => $zip->basename,
|
||||||
|
], 201);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Guest download multiple files via zip
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
* @param $token
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function zip_multiple_files(Request $request, $token)
|
||||||
|
{
|
||||||
|
// Get shared record
|
||||||
|
$shared = get_shared($token);
|
||||||
|
|
||||||
|
$file_parent_folders = File::whereUserId($shared->user_id)
|
||||||
|
->whereIn('id', $request->items)
|
||||||
|
->get()
|
||||||
|
->pluck('folder_id')
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
// Check access to requested directory
|
||||||
|
$this->helper->check_item_access($file_parent_folders, $shared);
|
||||||
|
|
||||||
|
// Get requested files
|
||||||
|
$files = File::whereUserId($shared->user_id)
|
||||||
|
->whereIn('id', $request->items)
|
||||||
|
->get();
|
||||||
|
|
||||||
|
$zip = $this->filemanager->zip_files($files, $shared);
|
||||||
|
|
||||||
|
// Get file
|
||||||
|
return response([
|
||||||
|
'url' => route('zip_public', [
|
||||||
|
'id' => $zip->id,
|
||||||
|
'token' => $shared->token,
|
||||||
|
]),
|
||||||
|
'name' => $zip->basename,
|
||||||
|
], 201);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,8 +36,7 @@ class FileSharingController extends Controller
|
|||||||
public function index($token)
|
public function index($token)
|
||||||
{
|
{
|
||||||
// Get shared token
|
// Get shared token
|
||||||
$shared = Share::whereToken($token)
|
$shared = get_shared($token);
|
||||||
->first();
|
|
||||||
|
|
||||||
if (!$shared) {
|
if (!$shared) {
|
||||||
return response()
|
return response()
|
||||||
@@ -95,7 +94,7 @@ class FileSharingController extends Controller
|
|||||||
$file_pretty_name = $file->name . '.' . $file->mimetype;
|
$file_pretty_name = $file->name . '.' . $file->mimetype;
|
||||||
|
|
||||||
// Get file path
|
// Get file path
|
||||||
$path = '/file-manager/' . $file->basename;
|
$path = '/files/' . $file->basename;
|
||||||
|
|
||||||
// Check if file exist
|
// Check if file exist
|
||||||
if (!Storage::exists($path)) abort(404);
|
if (!Storage::exists($path)) abort(404);
|
||||||
@@ -121,7 +120,7 @@ class FileSharingController extends Controller
|
|||||||
public function authenticate(AuthenticateShareRequest $request, $token)
|
public function authenticate(AuthenticateShareRequest $request, $token)
|
||||||
{
|
{
|
||||||
// Get sharing record
|
// Get sharing record
|
||||||
$shared = Share::where(DB::raw('BINARY `token`'), $token)->firstOrFail();
|
$shared = get_shared($token);
|
||||||
|
|
||||||
// Check password
|
// Check password
|
||||||
if (!Hash::check($request->password, $shared->password)) {
|
if (!Hash::check($request->password, $shared->password)) {
|
||||||
@@ -166,37 +165,6 @@ class FileSharingController extends Controller
|
|||||||
return collect([$folders, $files])->collapse();
|
return collect([$folders, $files])->collapse();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Browse public folders
|
|
||||||
*
|
|
||||||
* @param $id
|
|
||||||
* @param $token
|
|
||||||
* @return Collection
|
|
||||||
*/
|
|
||||||
public function get_public_folders($id, $token)
|
|
||||||
{
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Abort if folder is protected
|
|
||||||
if ((int)$shared->is_protected) {
|
|
||||||
abort(403, "Sorry, you don't have permission");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if user can get directory
|
|
||||||
$this->helper->check_item_access($id, $shared);
|
|
||||||
|
|
||||||
// Get files and folders
|
|
||||||
list($folders, $files) = $this->get_items($id, $shared);
|
|
||||||
|
|
||||||
// Set thumbnail links for public files
|
|
||||||
$files->map(function ($item) use ($token) {
|
|
||||||
$item->setPublicUrl($token);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Collect folders and files to single array
|
|
||||||
return collect([$folders, $files])->collapse();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get shared public file record
|
* Get shared public file record
|
||||||
*
|
*
|
||||||
@@ -206,8 +174,7 @@ class FileSharingController extends Controller
|
|||||||
public function file_public($token)
|
public function file_public($token)
|
||||||
{
|
{
|
||||||
// Get sharing record
|
// Get sharing record
|
||||||
$shared = Share::whereToken($token)
|
$shared = get_shared($token);
|
||||||
->firstOrFail();
|
|
||||||
|
|
||||||
// Abort if file is protected
|
// Abort if file is protected
|
||||||
if ((int)$shared->is_protected) {
|
if ((int)$shared->is_protected) {
|
||||||
@@ -275,36 +242,6 @@ class FileSharingController extends Controller
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get navigation tree
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function get_public_navigation_tree($token)
|
|
||||||
{
|
|
||||||
// Get sharing record
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Check if user can get directory
|
|
||||||
$this->helper->check_item_access($shared->item_id, $shared);
|
|
||||||
|
|
||||||
// Get folders
|
|
||||||
$folders = Folder::with('folders:id,parent_id,name')
|
|
||||||
->where('parent_id', $shared->item_id)
|
|
||||||
->where('user_id', $shared->user_id)
|
|
||||||
->sortable()
|
|
||||||
->get(['id', 'parent_id', 'id', 'name']);
|
|
||||||
|
|
||||||
return [
|
|
||||||
[
|
|
||||||
'id' => $shared->item_id,
|
|
||||||
'name' => __('vuefilemanager.home'),
|
|
||||||
'location' => 'public',
|
|
||||||
'folders' => $folders,
|
|
||||||
]
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Search private files
|
* Search private files
|
||||||
*
|
*
|
||||||
@@ -347,81 +284,4 @@ class FileSharingController extends Controller
|
|||||||
// Collect folders and files to single array
|
// Collect folders and files to single array
|
||||||
return collect([$folders, $files])->collapse();
|
return collect([$folders, $files])->collapse();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Search public files
|
|
||||||
*
|
|
||||||
* @param Request $request
|
|
||||||
* @param $token
|
|
||||||
* @return Collection
|
|
||||||
*/
|
|
||||||
public function search_public(Request $request, $token)
|
|
||||||
{
|
|
||||||
// Get shared
|
|
||||||
$shared = get_shared($token);
|
|
||||||
|
|
||||||
// Abort if folder is protected
|
|
||||||
if ((int)$shared->is_protected) {
|
|
||||||
abort(403, "Sorry, you don't have permission");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Search files id db
|
|
||||||
$searched_files = File::search($request->input('query'))
|
|
||||||
->where('user_id', $shared->user_id)
|
|
||||||
->get();
|
|
||||||
$searched_folders = Folder::search($request->input('query'))
|
|
||||||
->where('user_id', $shared->user_id)
|
|
||||||
->get();
|
|
||||||
|
|
||||||
// Get all children content
|
|
||||||
$foldersIds = Folder::with('folders:id,parent_id,unique_id,name')
|
|
||||||
->where('user_id', $shared->user_id)
|
|
||||||
->where('parent_id', $shared->item_id)
|
|
||||||
->get();
|
|
||||||
|
|
||||||
// Get accessible folders
|
|
||||||
$accessible_folder_ids = Arr::flatten([filter_folders_ids($foldersIds), $shared->item_id]);
|
|
||||||
|
|
||||||
// Filter files
|
|
||||||
$files = $searched_files->filter(function ($file) use ($accessible_folder_ids, $token) {
|
|
||||||
|
|
||||||
// Set public urls
|
|
||||||
$file->setPublicUrl($token);
|
|
||||||
|
|
||||||
// check if item is in accessible folders
|
|
||||||
return in_array($file->folder_id, $accessible_folder_ids);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Filter folders
|
|
||||||
$folders = $searched_folders->filter(function ($folder) use ($accessible_folder_ids) {
|
|
||||||
|
|
||||||
// check if item is in accessible folders
|
|
||||||
return in_array($folder->unique_id, $accessible_folder_ids);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Collect folders and files to single array
|
|
||||||
return collect([$folders, $files])->collapse();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get folders and files
|
|
||||||
*
|
|
||||||
* @param $id
|
|
||||||
* @param $shared
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
private function get_items($id, $shared): array
|
|
||||||
{
|
|
||||||
$folders = Folder::where('user_id', $shared->user_id)
|
|
||||||
->where('parent_id', $id)
|
|
||||||
->sortable()
|
|
||||||
->get();
|
|
||||||
|
|
||||||
$files = File::where('user_id', $shared->user_id)
|
|
||||||
->where('folder_id', $id)
|
|
||||||
->sortable()
|
|
||||||
->get();
|
|
||||||
|
|
||||||
return [$folders, $files];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Http\Controllers\Sharing;
|
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
|
|
||||||
class ShareEditContentController extends Controller
|
|
||||||
{
|
|
||||||
//
|
|
||||||
}
|
|
||||||
@@ -118,6 +118,6 @@ class SharedFileAccessContentController extends Controller
|
|||||||
(int)$file->getRawOriginal('filesize')
|
(int)$file->getRawOriginal('filesize')
|
||||||
);
|
);
|
||||||
|
|
||||||
return $this->helper->thumbnail_file($file, $shared->user_id);
|
return $this->helper->download_thumbnail_file($file, $shared->user_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if current user subscribed plan is highest
|
|
||||||
*
|
|
||||||
* @param $id
|
|
||||||
* @param $subscribed_capacity
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
function is_highest_plan($plan)
|
|
||||||
{
|
|
||||||
$plans = app('rinvex.subscriptions.plan')->all();
|
|
||||||
|
|
||||||
$unsubscribed = $plans->filter(function ($item) use ($plan) {
|
|
||||||
return $item->id !== $plan->id;
|
|
||||||
});
|
|
||||||
|
|
||||||
$capacities = $unsubscribed->map(function ($item) {
|
|
||||||
return $item->features->first()->value;
|
|
||||||
});
|
|
||||||
|
|
||||||
return max(Arr::flatten($capacities)) < $plan->features->first()->value ? 1 : 0;
|
|
||||||
}
|
|
||||||
@@ -61,8 +61,7 @@
|
|||||||
"database/factories"
|
"database/factories"
|
||||||
],
|
],
|
||||||
"files": [
|
"files": [
|
||||||
"app/Http//Helpers/helpers.php",
|
"app/Http/helpers.php"
|
||||||
"app/Http//Helpers/subscription.php"
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\AppFunctionsController;
|
use App\Http\Controllers\App\AppFunctionsController;
|
||||||
use App\Http\Controllers\Auth\ForgotPasswordController;
|
use App\Http\Controllers\Auth\ForgotPasswordController;
|
||||||
use App\Http\Controllers\Auth\ResetPasswordController;
|
use App\Http\Controllers\Auth\ResetPasswordController;
|
||||||
use App\Http\Controllers\FileManager\BrowseController;
|
use App\Http\Controllers\FileManager\BrowseController;
|
||||||
@@ -72,14 +72,14 @@ Route::group(['middleware' => ['auth:api', 'auth.shared', 'scope:visitor,editor'
|
|||||||
Route::group(['middleware' => ['auth:sanctum']], function () {
|
Route::group(['middleware' => ['auth:sanctum']], function () {
|
||||||
|
|
||||||
// Edit items
|
// Edit items
|
||||||
Route::post('/create-folder', [EditItemsController::class, 'user_create_folder']);
|
Route::post('/create-folder', [EditItemsController::class, 'create_folder']);
|
||||||
Route::patch('/rename/{id}', [EditItemsController::class, 'user_rename_item']);
|
Route::patch('/rename/{id}', [EditItemsController::class, 'rename_item']);
|
||||||
Route::post('/remove', [EditItemsController::class, 'user_delete_item']);
|
Route::post('/remove', [EditItemsController::class, 'delete_item']);
|
||||||
Route::post('/upload', [EditItemsController::class, 'user_upload']);
|
Route::post('/upload', [EditItemsController::class, 'upload']);
|
||||||
Route::post('/move', [EditItemsController::class, 'user_move']);
|
Route::post('/move', [EditItemsController::class, 'move']);
|
||||||
|
|
||||||
Route::group(['prefix' => 'zip'], function () {
|
Route::group(['prefix' => 'zip'], function () {
|
||||||
Route::post('/files', [EditItemsController::class, 'user_zip_multiple_files']);
|
Route::post('/files', [EditItemsController::class, 'zip_multiple_files']);
|
||||||
Route::get('/folder/{unique_id}', [EditItemsController::class, 'user_zip_folder']);
|
Route::get('/folder/{unique_id}', [EditItemsController::class, 'zip_folder']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Get avatars and system images
|
// Get avatars and system images
|
||||||
use App\Http\Controllers\FileAccessController;
|
use App\Http\Controllers\FileManager\FileAccessController;
|
||||||
use App\Http\Controllers\Sharing\SharedFileAccessContentController;
|
use App\Http\Controllers\Sharing\SharedFileAccessContentController;
|
||||||
|
|
||||||
Route::get('/avatars/{avatar}', [FileAccessController::class, 'get_avatar'])->name('avatar');
|
Route::get('/avatars/{avatar}', [FileAccessController::class, 'get_avatar'])->name('avatar');
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\General\Maintenance;
|
use App\Http\Controllers\App\Maintenance;
|
||||||
|
|
||||||
Route::post('/upgrade', [Maintenance::class, 'upgrade']);
|
Route::post('/upgrade', [Maintenance::class, 'upgrade']);
|
||||||
Route::get('/down', [Maintenance::class, 'down']);
|
Route::get('/down', [Maintenance::class, 'down']);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\Setup\SetupWizardController;
|
use App\Http\Controllers\App\SetupWizardController;
|
||||||
|
|
||||||
Route::post('/purchase-code', [SetupWizardController::class, 'verify_purchase_code']);
|
Route::post('/purchase-code', [SetupWizardController::class, 'verify_purchase_code']);
|
||||||
Route::post('/database', [SetupWizardController::class, 'setup_database']);
|
Route::post('/database', [SetupWizardController::class, 'setup_database']);
|
||||||
|
|||||||
@@ -1,31 +1,33 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\AppFunctionsController;
|
use App\Http\Controllers\App\AppFunctionsController;
|
||||||
use App\Http\Controllers\FileManager\EditItemsController;
|
use App\Http\Controllers\Sharing\BrowseShareController;
|
||||||
|
use App\Http\Controllers\Sharing\EditShareItemsController;
|
||||||
use App\Http\Controllers\FileManager\ShareController;
|
use App\Http\Controllers\FileManager\ShareController;
|
||||||
use App\Http\Controllers\Sharing\FileSharingController;
|
use App\Http\Controllers\Sharing\FileSharingController;
|
||||||
|
|
||||||
// Editor functions
|
// Editor functions
|
||||||
Route::group(['prefix' => 'editor'], function () {
|
Route::group(['prefix' => 'editor'], function () {
|
||||||
Route::post('/create-folder/public/{token}', [EditItemsController::class, 'guest_create_folder']);
|
Route::post('/create-folder/public/{token}', [EditShareItemsController::class, 'create_folder']);
|
||||||
Route::patch('/rename/{id}/public/{token}', [EditItemsController::class, 'guest_rename_item']);
|
Route::patch('/rename/{id}/public/{token}', [EditShareItemsController::class, 'rename_item']);
|
||||||
Route::post('/remove/public/{token}', [EditItemsController::class, 'guest_delete_item']);
|
Route::post('/remove/public/{token}', [EditShareItemsController::class, 'delete_item']);
|
||||||
Route::post('/upload/public/{token}', [EditItemsController::class, 'guest_upload']);
|
Route::post('/upload/public/{token}', [EditShareItemsController::class, 'upload']);
|
||||||
Route::post('/move/public/{token}', [EditItemsController::class, 'guest_move']);
|
Route::post('/move/public/{token}', [EditShareItemsController::class, 'move']);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Editor/Visitor zip functions
|
// Editor/Visitor zip functions
|
||||||
Route::group(['prefix' => 'zip'], function () {
|
Route::group(['prefix' => 'zip'], function () {
|
||||||
Route::post('/files/public/{token}', [EditItemsController::class, 'guest_zip_multiple_files']);
|
Route::post('/files/public/{token}', [EditShareItemsController::class, 'zip_multiple_files']);
|
||||||
Route::get('/folder/{id}/public/{token}', [EditItemsController::class, 'guest_zip_folder']);
|
Route::get('/folder/{id}/public/{token}', [EditShareItemsController::class, 'zip_folder']);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Browse share content
|
// Browse share content
|
||||||
Route::group(['prefix' => 'browse'], function () {
|
Route::group(['prefix' => 'browse'], function () {
|
||||||
Route::get('/navigation/public/{token}', [FileSharingController::class, 'get_public_navigation_tree']);
|
Route::get('/navigation/public/{token}', [BrowseShareController::class, 'get_public_navigation_tree']);
|
||||||
Route::get('/folders/{id}/public/{token}', [FileSharingController::class, 'get_public_folders']);
|
Route::get('/folders/{id}/public/{token}', [BrowseShareController::class, 'get_public_folders']);
|
||||||
|
Route::get('/search/public/{token}', [BrowseShareController::class, 'search_public']);
|
||||||
|
|
||||||
Route::post('/shared/authenticate/{token}', [FileSharingController::class, 'authenticate']);
|
Route::post('/shared/authenticate/{token}', [FileSharingController::class, 'authenticate']);
|
||||||
Route::get('/search/public/{token}', [FileSharingController::class, 'search_public']);
|
|
||||||
Route::get('/files/{token}/public', [FileSharingController::class, 'file_public']);
|
Route::get('/files/{token}/public', [FileSharingController::class, 'file_public']);
|
||||||
Route::get('/shared/{token}', [ShareController::class, 'show']);
|
Route::get('/shared/{token}', [ShareController::class, 'show']);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use App\Http\Controllers\Admin\InvoiceController;
|
use App\Http\Controllers\Admin\InvoiceController;
|
||||||
use App\Http\Controllers\AppFunctionsController;
|
use App\Http\Controllers\App\SetupWizardController;
|
||||||
use App\Http\Controllers\Setup\SetupWizardController;
|
use App\Http\Controllers\App\AppFunctionsController;
|
||||||
use App\Http\Controllers\Sharing\FileSharingController;
|
use App\Http\Controllers\Sharing\FileSharingController;
|
||||||
use App\Http\Controllers\Subscription\StripeWebhookController;
|
use App\Http\Controllers\Subscription\StripeWebhookController;
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class ShareEditorTest extends TestCase
|
|||||||
'name' => 'Renamed Item',
|
'name' => 'Renamed Item',
|
||||||
'type' => 'file',
|
'type' => 'file',
|
||||||
])
|
])
|
||||||
->assertStatus(200)
|
->assertStatus(201)
|
||||||
->assertJsonFragment([
|
->assertJsonFragment([
|
||||||
'name' => 'Renamed Item',
|
'name' => 'Renamed Item',
|
||||||
]);
|
]);
|
||||||
@@ -98,7 +98,7 @@ class ShareEditorTest extends TestCase
|
|||||||
'name' => 'Renamed Folder',
|
'name' => 'Renamed Folder',
|
||||||
'type' => 'folder',
|
'type' => 'folder',
|
||||||
])
|
])
|
||||||
->assertStatus(200)
|
->assertStatus(201)
|
||||||
->assertJsonFragment([
|
->assertJsonFragment([
|
||||||
'name' => 'Renamed Folder',
|
'name' => 'Renamed Folder',
|
||||||
]);
|
]);
|
||||||
|
|||||||
Reference in New Issue
Block a user