mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-05 18:23:48 +00:00
backend refactoring
This commit is contained in:
@@ -17,7 +17,7 @@ use App\FileManagerFile;
|
||||
use Response;
|
||||
|
||||
|
||||
class EditController extends Controller
|
||||
class EditItemsController extends Controller
|
||||
{
|
||||
/**
|
||||
* Create new folder
|
||||
@@ -64,11 +64,10 @@ class EditController extends Controller
|
||||
* @param Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function rename_item(Request $request)
|
||||
public function rename_item(Request $request, $unique_id)
|
||||
{
|
||||
// Validate request
|
||||
$validator = Validator::make($request->all(), [
|
||||
'unique_id' => 'required|integer',
|
||||
'name' => 'required|string',
|
||||
'type' => 'required|string',
|
||||
]);
|
||||
@@ -82,7 +81,7 @@ class EditController extends Controller
|
||||
// Update folder name
|
||||
if ($request->type === 'folder') {
|
||||
|
||||
$item = FileManagerFolder::where('unique_id', $request->unique_id)
|
||||
$item = FileManagerFolder::where('unique_id', $unique_id)
|
||||
->where('user_id', $user_id)
|
||||
->firstOrFail();
|
||||
|
||||
@@ -96,7 +95,7 @@ class EditController extends Controller
|
||||
|
||||
} else {
|
||||
|
||||
$item = FileManagerFile::where('unique_id', $request->unique_id)
|
||||
$item = FileManagerFile::where('unique_id', $unique_id)
|
||||
->where('user_id', $user_id)
|
||||
->firstOrFail();
|
||||
|
||||
@@ -117,13 +116,13 @@ class EditController extends Controller
|
||||
* Delete item
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $unique_id
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function delete_item(Request $request)
|
||||
public function delete_item(Request $request, $unique_id)
|
||||
{
|
||||
// Validate request
|
||||
$validator = Validator::make($request->all(), [
|
||||
'unique_id' => 'required|integer',
|
||||
'type' => 'required|string',
|
||||
'force_delete' => 'required|boolean',
|
||||
]);
|
||||
@@ -141,7 +140,7 @@ class EditController extends Controller
|
||||
$folder = FileManagerFolder::withTrashed()
|
||||
->with(['folders'])
|
||||
->where('user_id', $user->id)
|
||||
->where('unique_id', $request->unique_id)
|
||||
->where('unique_id', $unique_id)
|
||||
->first();
|
||||
|
||||
// Check permission to delete for authenticated public editor
|
||||
@@ -158,7 +157,7 @@ class EditController extends Controller
|
||||
// Get children files
|
||||
$files = FileManagerFile::onlyTrashed()
|
||||
->where('user_id', $user->id)
|
||||
->whereIn('folder_id', Arr::flatten([$request->unique_id, $child_folders]))
|
||||
->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders]))
|
||||
->get();
|
||||
|
||||
// Remove all children files
|
||||
@@ -180,7 +179,7 @@ class EditController extends Controller
|
||||
} else {
|
||||
|
||||
// Remove folder from user favourites
|
||||
$user->favourites()->detach($request->unique_id);
|
||||
$user->favourites()->detach($unique_id);
|
||||
|
||||
// Soft delete folder record
|
||||
$folder->delete();
|
||||
@@ -189,7 +188,7 @@ class EditController extends Controller
|
||||
|
||||
$file = FileManagerFile::withTrashed()
|
||||
->where('user_id', $user->id)
|
||||
->where('unique_id', $request->unique_id)
|
||||
->where('unique_id', $unique_id)
|
||||
->first();
|
||||
|
||||
// Check permission to delete for authenticated public editor
|
||||
@@ -298,13 +297,13 @@ class EditController extends Controller
|
||||
* Move item
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $unique_id
|
||||
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function move_item(Request $request)
|
||||
public function move_item(Request $request, $unique_id)
|
||||
{
|
||||
// Validate request
|
||||
$validator = Validator::make($request->all(), [
|
||||
'from_unique_id' => 'required|integer',
|
||||
'to_unique_id' => 'required|integer',
|
||||
'from_type' => 'required|string',
|
||||
]);
|
||||
@@ -319,7 +318,7 @@ class EditController extends Controller
|
||||
|
||||
// Move folder
|
||||
$item = FileManagerFolder::where('user_id', $user_id)
|
||||
->where('unique_id', $request->from_unique_id)
|
||||
->where('unique_id', $unique_id)
|
||||
->firstOrFail();
|
||||
|
||||
$item->parent_id = $request->to_unique_id;
|
||||
@@ -328,7 +327,7 @@ class EditController extends Controller
|
||||
|
||||
// Move file under new folder
|
||||
$item = FileManagerFile::where('user_id', $user_id)
|
||||
->where('unique_id', $request->from_unique_id)
|
||||
->where('unique_id', $unique_id)
|
||||
->firstOrFail();
|
||||
|
||||
$item->folder_id = $request->to_unique_id;
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers\FileFunctions;
|
||||
|
||||
use App\FileManagerFolder;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
@@ -15,7 +16,7 @@ class FavouriteController extends Controller
|
||||
* @param Request $request
|
||||
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function add_to_favourites(Request $request)
|
||||
public function store(Request $request)
|
||||
{
|
||||
// Validate request
|
||||
$validator = Validator::make($request->all(), [
|
||||
@@ -25,8 +26,12 @@ class FavouriteController extends Controller
|
||||
// Return error
|
||||
if ($validator->fails()) abort(400, 'Bad input');
|
||||
|
||||
// Get user
|
||||
// Get user & folder
|
||||
$user = Auth::user();
|
||||
$folder = FileManagerFolder::where('unique_id', $request->unique_id)->first();
|
||||
|
||||
// Check ownership
|
||||
if ($folder->user_id !== $user->id) abort(403);
|
||||
|
||||
// Add folder to user favourites
|
||||
$user->favourites()->attach($request->unique_id);
|
||||
@@ -38,24 +43,16 @@ class FavouriteController extends Controller
|
||||
/**
|
||||
* Remove folder from user favourites
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $unique_id
|
||||
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function remove_from_favourites(Request $request)
|
||||
public function destroy($unique_id)
|
||||
{
|
||||
// Validate request
|
||||
$validator = Validator::make($request->all(), [
|
||||
'unique_id' => 'required|integer',
|
||||
]);
|
||||
|
||||
// Return error
|
||||
if ($validator->fails()) abort(400, 'Bad input');
|
||||
|
||||
// Get user
|
||||
$user = Auth::user();
|
||||
|
||||
// Remove folder from user favourites
|
||||
$user->favourites()->detach($request->unique_id);
|
||||
$user->favourites()->detach($unique_id);
|
||||
|
||||
// Return updated favourites
|
||||
return $user->favourites->makeHidden(['pivot']);
|
||||
|
||||
@@ -2,29 +2,42 @@
|
||||
|
||||
namespace App\Http\Controllers\FileFunctions;
|
||||
|
||||
use App\Http\Requests\Share\CreateShareRequest;
|
||||
use App\Http\Requests\Share\UpdateShareRequest;
|
||||
use App\Http\Resources\ShareResource;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Str;
|
||||
use App\Share;
|
||||
|
||||
class ShareController extends Controller
|
||||
{
|
||||
/**
|
||||
* Get shared record
|
||||
*
|
||||
* @return ShareResource
|
||||
*/
|
||||
public function show($token)
|
||||
{
|
||||
// Get record
|
||||
$shared = Share::where(DB::raw('BINARY `token`'), $token)
|
||||
->firstOrFail();
|
||||
|
||||
return new ShareResource($shared);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate file share link
|
||||
*
|
||||
* @param Request $request
|
||||
* @return array
|
||||
* @param CreateShareRequest $request
|
||||
* @return ShareResource
|
||||
*/
|
||||
public function store(Request $request)
|
||||
public function store(CreateShareRequest $request)
|
||||
{
|
||||
// TODO: validation
|
||||
|
||||
do {
|
||||
// Generate unique token
|
||||
$token = Str::random(16);
|
||||
@@ -33,61 +46,61 @@ class ShareController extends Controller
|
||||
|
||||
// Create shared options
|
||||
$options = [
|
||||
'token' => $token,
|
||||
'user_id' => Auth::id(),
|
||||
'item_id' => $request->unique_id,
|
||||
'permission' => $request->permission,
|
||||
'protected' => $request->isPassword,
|
||||
'type' => $request->type === 'folder' ? 'folder' : 'file',
|
||||
'password' => $request->has('password') ? Hash::make($request->password) : null,
|
||||
'type' => $request->type === 'folder' ? 'folder' : 'file',
|
||||
'protected' => $request->isPassword,
|
||||
'permission' => $request->permission,
|
||||
'item_id' => $request->unique_id,
|
||||
'user_id' => Auth::id(),
|
||||
'token' => $token,
|
||||
];
|
||||
|
||||
// Store shared item
|
||||
$shared = Share::create($options);
|
||||
|
||||
// Return shared record
|
||||
return Arr::except($shared, ['password', 'user_id', 'updated_at', 'created_at']);
|
||||
// Return created shared record
|
||||
return new ShareResource(Share::create($options));
|
||||
}
|
||||
|
||||
/**
|
||||
* Update sharing
|
||||
*
|
||||
* @param Request $request
|
||||
* @return mixed
|
||||
* @param UpdateShareRequest $request
|
||||
* @param $token
|
||||
* @return ShareResource
|
||||
*/
|
||||
public function update(Request $request)
|
||||
public function update(UpdateShareRequest $request, $token)
|
||||
{
|
||||
// TODO: validacia
|
||||
|
||||
// Get sharing record
|
||||
$shared = Share::where('token', $request->get('token'))->firstOrFail();
|
||||
$shared = Share::where('token', $token)
|
||||
->where('user_id', Auth::id())
|
||||
->firstOrFail();
|
||||
|
||||
// Update sharing record
|
||||
$shared->update([
|
||||
'permission' => $request->permission,
|
||||
'protected' => $request->isProtected,
|
||||
'password' => $request->has('password') ? Hash::make($request->password) : $shared->password,
|
||||
'protected' => $request->protected,
|
||||
'password' => $request->password ? Hash::make($request->password) : $shared->password,
|
||||
]);
|
||||
|
||||
// Return shared record
|
||||
return Arr::except($shared, ['password', 'user_id', 'updated_at', 'created_at']);
|
||||
return new ShareResource($shared);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete sharing item
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $token
|
||||
* @return ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function delete(Request $request)
|
||||
public function destroy($token)
|
||||
{
|
||||
// Get sharing record
|
||||
$shared = Share::where('token', $request->get('token'))->firstOrFail();
|
||||
$shared = Share::where('token', $token)
|
||||
->where('user_id', Auth::id())
|
||||
->firstOrFail();
|
||||
|
||||
// Delete shared record
|
||||
$shared->delete();
|
||||
|
||||
// Done
|
||||
return response('Done!', 202);
|
||||
return response('Done!', 204);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -51,13 +51,13 @@ class TrashController extends Controller
|
||||
* Restore item from trash
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $unique_id
|
||||
* @return ResponseFactory|\Illuminate\Http\Response
|
||||
*/
|
||||
public function restore(Request $request)
|
||||
public function restore(Request $request, $unique_id)
|
||||
{
|
||||
// Validate request
|
||||
$validator = Validator::make($request->all(), [
|
||||
'unique_id' => 'required|integer',
|
||||
'type' => 'required|string',
|
||||
'to_home' => 'boolean',
|
||||
]);
|
||||
@@ -72,7 +72,10 @@ class TrashController extends Controller
|
||||
if ($request->type === 'folder') {
|
||||
|
||||
// Get folder
|
||||
$item = FileManagerFolder::onlyTrashed()->where('user_id', $user_id)->where('unique_id', $request->unique_id)->first();
|
||||
$item = FileManagerFolder::onlyTrashed()
|
||||
->where('user_id', $user_id)
|
||||
->where('unique_id', $unique_id)
|
||||
->first();
|
||||
|
||||
// Restore item to home directory
|
||||
if ($request->has('to_home') && $request->to_home) {
|
||||
@@ -82,7 +85,10 @@ class TrashController extends Controller
|
||||
} else {
|
||||
|
||||
// Get item
|
||||
$item = FileManagerFile::onlyTrashed()->where('user_id', $user_id)->where('unique_id', $request->unique_id)->first();
|
||||
$item = FileManagerFile::onlyTrashed()
|
||||
->where('user_id', $user_id)
|
||||
->where('unique_id', $unique_id)
|
||||
->first();
|
||||
|
||||
// Restore item to home directory
|
||||
if ($request->has('to_home') && $request->to_home) {
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace App\Http\Controllers\Sharing;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Share\AuthenticateShareRequest;
|
||||
use App\Http\Resources\ShareResource;
|
||||
use Illuminate\Contracts\View\Factory;
|
||||
use Illuminate\Support\Facades\Cookie;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
@@ -27,7 +29,7 @@ class FileSharingController extends Controller
|
||||
{
|
||||
// Get shared token
|
||||
$shared = Share::where(DB::raw('BINARY `token`'), $token)
|
||||
->firstOrFail(['token', 'item_id', 'type', 'permission', 'protected']);
|
||||
->firstOrFail();
|
||||
|
||||
// Delete old access_token if exist
|
||||
Cookie::queue('access_token', '', -1);
|
||||
@@ -43,30 +45,15 @@ class FileSharingController extends Controller
|
||||
return view("index");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get shared record
|
||||
*
|
||||
* @param Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function show($token)
|
||||
{
|
||||
// Get sharing record
|
||||
return Share::where(DB::raw('BINARY `token`'), $token)
|
||||
->firstOrFail(['token', 'item_id', 'type', 'permission', 'protected']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check Password for protected item
|
||||
*
|
||||
* @param Request $request
|
||||
* @param AuthenticateShareRequest $request
|
||||
* @param $token
|
||||
* @return array
|
||||
*/
|
||||
public function authenticate(Request $request, $token)
|
||||
public function authenticate(AuthenticateShareRequest $request, $token)
|
||||
{
|
||||
// TODO: validacia
|
||||
|
||||
// Get sharing record
|
||||
$shared = Share::where(DB::raw('BINARY `token`'), $token)->firstOrFail();
|
||||
|
||||
@@ -86,7 +73,7 @@ class FileSharingController extends Controller
|
||||
$token = $user->createToken('access_token', [$scope])->accessToken;
|
||||
|
||||
// Return authorize token with shared options
|
||||
return response(Arr::except($shared, ['password', 'user_id', 'updated_at', 'created_at']), 200)
|
||||
return response(new ShareResource($shared), 200)
|
||||
->cookie('shared_token', $shared->token, 43200)
|
||||
->cookie('access_token', $token, 43200);
|
||||
}
|
||||
@@ -98,7 +85,7 @@ class FileSharingController extends Controller
|
||||
* @param $unique_id
|
||||
* @return Collection
|
||||
*/
|
||||
public function browse_private(Request $request, $unique_id)
|
||||
public function get_private_folders(Request $request, $unique_id)
|
||||
{
|
||||
// Check if token exist
|
||||
if (! $request->hasCookie('shared_token') )
|
||||
@@ -110,14 +97,8 @@ class FileSharingController extends Controller
|
||||
// Check if user can get directory
|
||||
$this->check_folder_access($unique_id, $shared);
|
||||
|
||||
// Get folders and files
|
||||
$folders = FileManagerFolder::where('user_id', $shared->user_id)
|
||||
->where('parent_id', $unique_id)
|
||||
->get();
|
||||
|
||||
$files = FileManagerFile::where('user_id', $shared->user_id)
|
||||
->where('folder_id', $unique_id)
|
||||
->get();
|
||||
// Get files and folders
|
||||
list($folders, $files) = $this->get_items($unique_id, $shared);
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])->collapse();
|
||||
@@ -126,11 +107,10 @@ class FileSharingController extends Controller
|
||||
/**
|
||||
* Browse public folders
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $unique_id
|
||||
* @return Collection
|
||||
*/
|
||||
public function browse_public($token, $unique_id)
|
||||
public function get_public_folders($unique_id, $token)
|
||||
{
|
||||
// Get sharing record
|
||||
$shared = Share::where(DB::raw('BINARY `token`'), $token)->firstOrFail();
|
||||
@@ -143,24 +123,8 @@ class FileSharingController extends Controller
|
||||
// Check if user can get directory
|
||||
$this->check_folder_access($unique_id, $shared);
|
||||
|
||||
// Get folders and files
|
||||
$folders = FileManagerFolder::where('user_id', $shared->user_id)
|
||||
->where('parent_id', $unique_id)
|
||||
->get();
|
||||
|
||||
$files = FileManagerFile::where('user_id', $shared->user_id)
|
||||
->where('folder_id', $unique_id)
|
||||
->get();
|
||||
|
||||
// Add shared token to file
|
||||
/*if ($shared->protected) {
|
||||
|
||||
$files->map(function ($file) use ($shared) {
|
||||
//$file->thumbnail = $file->getOriginal('thumbnail') . '?token=' . $shared->token;
|
||||
|
||||
$file->thumbnail = route('thumbnail-public', ['name' => $file->getOriginal('thumbnail')]);
|
||||
});
|
||||
}*/
|
||||
// Get files and folders
|
||||
list($folders, $files) = $this->get_items($unique_id, $shared);
|
||||
|
||||
// Collect folders and files to single array
|
||||
return collect([$folders, $files])->collapse();
|
||||
@@ -235,4 +199,24 @@ class FileSharingController extends Controller
|
||||
if ($request->cookie('shared_token') !== $request->token)
|
||||
abort(401, "Sorry, you don't have permission");
|
||||
}
|
||||
|
||||
/**
|
||||
* Get folders and files
|
||||
*
|
||||
* @param $unique_id
|
||||
* @param $shared
|
||||
* @return array
|
||||
*/
|
||||
private function get_items($unique_id, $shared): array
|
||||
{
|
||||
$folders = FileManagerFolder::where('user_id', $shared->user_id)
|
||||
->where('parent_id', $unique_id)
|
||||
->get();
|
||||
|
||||
$files = FileManagerFile::where('user_id', $shared->user_id)
|
||||
->where('folder_id', $unique_id)
|
||||
->get();
|
||||
|
||||
return [$folders, $files];
|
||||
}
|
||||
}
|
||||
|
||||
20
app/Http/Requests/Share/AuthenticateShareRequest.php
Normal file
20
app/Http/Requests/Share/AuthenticateShareRequest.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Share;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
|
||||
class AuthenticateShareRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'password' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
35
app/Http/Requests/Share/CreateShareRequest.php
Normal file
35
app/Http/Requests/Share/CreateShareRequest.php
Normal file
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Share;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class CreateShareRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return Auth::check();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'isPassword' => 'required|boolean',
|
||||
'unique_id' => 'required|integer',
|
||||
'type' => 'required|string',
|
||||
'permission' => 'string',
|
||||
'password' => 'string',
|
||||
];
|
||||
}
|
||||
}
|
||||
33
app/Http/Requests/Share/UpdateShareRequest.php
Normal file
33
app/Http/Requests/Share/UpdateShareRequest.php
Normal file
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Requests\Share;
|
||||
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class UpdateShareRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function authorize()
|
||||
{
|
||||
return Auth::check();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function rules()
|
||||
{
|
||||
return [
|
||||
'protected' => 'required|boolean',
|
||||
'permission' => 'required|string',
|
||||
'password' => 'string',
|
||||
];
|
||||
}
|
||||
}
|
||||
34
app/Http/Resources/ShareResource.php
Normal file
34
app/Http/Resources/ShareResource.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
|
||||
class ShareResource extends JsonResource
|
||||
{
|
||||
/**
|
||||
* Transform the resource into an array.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($request)
|
||||
{
|
||||
return [
|
||||
'data' => [
|
||||
'id' => (string)$this->id,
|
||||
'type' => 'shares',
|
||||
'attributes' => [
|
||||
'permission' => $this->permission,
|
||||
'protected' => $this->protected,
|
||||
'item_id' => $this->item_id,
|
||||
'token' => $this->token,
|
||||
'link' => $this->link,
|
||||
'type' => $this->type,
|
||||
'created_at' => $this->created_at,
|
||||
'updated_at' => $this->updated_at,
|
||||
]
|
||||
]
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -300,5 +300,31 @@
|
||||
"/js/main.591c675411457ff698d7.hot-update.js": "/js/main.591c675411457ff698d7.hot-update.js",
|
||||
"/js/main.cccd40ca7d095723a593.hot-update.js": "/js/main.cccd40ca7d095723a593.hot-update.js",
|
||||
"/js/main.a109b65ef389a64af5d7.hot-update.js": "/js/main.a109b65ef389a64af5d7.hot-update.js",
|
||||
"/js/main.22245e61bfcf217f706c.hot-update.js": "/js/main.22245e61bfcf217f706c.hot-update.js"
|
||||
"/js/main.22245e61bfcf217f706c.hot-update.js": "/js/main.22245e61bfcf217f706c.hot-update.js",
|
||||
"/js/main.8c11dfdfaf17845cf09a.hot-update.js": "/js/main.8c11dfdfaf17845cf09a.hot-update.js",
|
||||
"/js/main.9aff70c5a90a45f159ad.hot-update.js": "/js/main.9aff70c5a90a45f159ad.hot-update.js",
|
||||
"/js/main.a6168da255f2e7292bcb.hot-update.js": "/js/main.a6168da255f2e7292bcb.hot-update.js",
|
||||
"/js/main.4242915892933878df4c.hot-update.js": "/js/main.4242915892933878df4c.hot-update.js",
|
||||
"/js/main.1c80def7a370934633e7.hot-update.js": "/js/main.1c80def7a370934633e7.hot-update.js",
|
||||
"/js/main.cd80b1fb07f07420d608.hot-update.js": "/js/main.cd80b1fb07f07420d608.hot-update.js",
|
||||
"/js/main.1ccf6e520ad498fb2dce.hot-update.js": "/js/main.1ccf6e520ad498fb2dce.hot-update.js",
|
||||
"/js/main.296239d53f66ab2fe920.hot-update.js": "/js/main.296239d53f66ab2fe920.hot-update.js",
|
||||
"/js/main.dbc6bc0bff80198fcc64.hot-update.js": "/js/main.dbc6bc0bff80198fcc64.hot-update.js",
|
||||
"/js/main.895bd9fbff26fa41b091.hot-update.js": "/js/main.895bd9fbff26fa41b091.hot-update.js",
|
||||
"/js/main.3f23297a5d372abb53b1.hot-update.js": "/js/main.3f23297a5d372abb53b1.hot-update.js",
|
||||
"/js/main.982c4e64795569baaf11.hot-update.js": "/js/main.982c4e64795569baaf11.hot-update.js",
|
||||
"/js/main.0c91d51f2932b21309cf.hot-update.js": "/js/main.0c91d51f2932b21309cf.hot-update.js",
|
||||
"/js/main.489c51acf78aba232d2a.hot-update.js": "/js/main.489c51acf78aba232d2a.hot-update.js",
|
||||
"/js/main.d5ebd32402e90e219490.hot-update.js": "/js/main.d5ebd32402e90e219490.hot-update.js",
|
||||
"/js/main.cf74f45631e4e7b5ac5c.hot-update.js": "/js/main.cf74f45631e4e7b5ac5c.hot-update.js",
|
||||
"/js/main.c38976e7274736bb0902.hot-update.js": "/js/main.c38976e7274736bb0902.hot-update.js",
|
||||
"/js/main.a8a7587e5999f33b671b.hot-update.js": "/js/main.a8a7587e5999f33b671b.hot-update.js",
|
||||
"/js/main.083f5f31b0cee3b68c36.hot-update.js": "/js/main.083f5f31b0cee3b68c36.hot-update.js",
|
||||
"/js/main.31b6183ff88b806a8468.hot-update.js": "/js/main.31b6183ff88b806a8468.hot-update.js",
|
||||
"/js/main.3541bb5c59c00646fcec.hot-update.js": "/js/main.3541bb5c59c00646fcec.hot-update.js",
|
||||
"/js/main.f3b8c97d25f214197e22.hot-update.js": "/js/main.f3b8c97d25f214197e22.hot-update.js",
|
||||
"/js/main.03abfdfa85dbfadbb25a.hot-update.js": "/js/main.03abfdfa85dbfadbb25a.hot-update.js",
|
||||
"/js/main.91ddc8d424d3311b18bc.hot-update.js": "/js/main.91ddc8d424d3311b18bc.hot-update.js",
|
||||
"/js/main.5f442f8e52b045ff877e.hot-update.js": "/js/main.5f442f8e52b045ff877e.hot-update.js",
|
||||
"/js/main.027e65e5617c5e8ebc36.hot-update.js": "/js/main.027e65e5617c5e8ebc36.hot-update.js"
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
>
|
||||
<!--ContextMenu for trash location-->
|
||||
<ul v-if="$isThisLocation(['trash', 'trash-root']) && $checkPermission('master')" class="menu-options" ref="list">
|
||||
<li class="menu-option" @click="removeItem" v-if="item">
|
||||
<li class="menu-option" @click="deleteItem" v-if="item">
|
||||
{{ $t('context_menu.delete') }}
|
||||
</li>
|
||||
<li class="menu-option" @click="$store.dispatch('restoreItem', item)" v-if="item">
|
||||
@@ -30,7 +30,7 @@
|
||||
<li class="menu-option" @click="addToFavourites" v-if="item && isFolder">
|
||||
{{ isInFavourites ? $t('context_menu.remove_from_favourites') : $t('context_menu.add_to_favourites') }}
|
||||
</li>
|
||||
<li class="menu-option" @click="removeItem" v-if="item">
|
||||
<li class="menu-option" @click="deleteItem" v-if="item">
|
||||
{{ $t('context_menu.delete') }}
|
||||
</li>
|
||||
<li class="menu-option" @click="shareItem" v-if="item">
|
||||
@@ -52,7 +52,7 @@
|
||||
<li class="menu-option" @click="createFolder">
|
||||
{{ $t('context_menu.create_folder') }}
|
||||
</li>
|
||||
<li class="menu-option" @click="removeItem" v-if="item">
|
||||
<li class="menu-option" @click="deleteItem" v-if="item">
|
||||
{{ $t('context_menu.delete') }}
|
||||
</li>
|
||||
<li class="menu-option" @click="moveItem" v-if="item">
|
||||
@@ -74,7 +74,7 @@
|
||||
<li class="menu-option" @click="createFolder">
|
||||
{{ $t('context_menu.create_folder') }}
|
||||
</li>
|
||||
<li class="menu-option" @click="removeItem" v-if="item">
|
||||
<li class="menu-option" @click="deleteItem" v-if="item">
|
||||
{{ $t('context_menu.delete') }}
|
||||
</li>
|
||||
<li class="menu-option" @click="moveItem" v-if="item">
|
||||
@@ -165,9 +165,9 @@
|
||||
// Show panel if is not open
|
||||
this.$store.dispatch('fileInfoToggle', true)
|
||||
},
|
||||
removeItem() {
|
||||
deleteItem() {
|
||||
// Dispatch remove item
|
||||
this.$store.dispatch('removeItem', this.item)
|
||||
this.$store.dispatch('deleteItem', this.item)
|
||||
},
|
||||
createFolder() {
|
||||
// Create folder
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
|
||||
// On items delete
|
||||
events.$on('items:delete', () => {
|
||||
this.$store.dispatch('removeItem', this.fileInfoDetail)
|
||||
this.$store.dispatch('deleteItem', this.fileInfoDetail)
|
||||
|
||||
//let ids = []
|
||||
//let items = []
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<li class="menu-option" @click="downloadItem" v-if="! isFolder">
|
||||
{{ $t('context_menu.download') }}
|
||||
</li>
|
||||
<li class="menu-option delete" @click="removeItem" v-if="fileInfoDetail">
|
||||
<li class="menu-option delete" @click="deleteItem" v-if="fileInfoDetail">
|
||||
{{ $t('context_menu.delete') }}
|
||||
</li>
|
||||
</ul>
|
||||
@@ -36,7 +36,7 @@
|
||||
<li class="menu-option" @click="downloadItem" v-if="! isFolder">
|
||||
{{ $t('context_menu.download') }}
|
||||
</li>
|
||||
<li class="menu-option delete" @click="removeItem" v-if="fileInfoDetail">
|
||||
<li class="menu-option delete" @click="deleteItem" v-if="fileInfoDetail">
|
||||
{{ $t('context_menu.delete') }}
|
||||
</li>
|
||||
</ul>
|
||||
@@ -58,7 +58,7 @@
|
||||
<li class="menu-option" @click="downloadItem" v-if="! isFolder">
|
||||
{{ $t('context_menu.download') }}
|
||||
</li>
|
||||
<li class="menu-option delete" @click="removeItem" v-if="fileInfoDetail">
|
||||
<li class="menu-option delete" @click="deleteItem" v-if="fileInfoDetail">
|
||||
{{ $t('context_menu.delete') }}
|
||||
</li>
|
||||
</ul>
|
||||
@@ -145,9 +145,9 @@
|
||||
this.fileInfoDetail.name + '.' + this.fileInfoDetail.mimetype
|
||||
)
|
||||
},
|
||||
removeItem() {
|
||||
deleteItem() {
|
||||
// Dispatch remove item
|
||||
this.$store.dispatch('removeItem', this.fileInfoDetail)
|
||||
this.$store.dispatch('deleteItem', this.fileInfoDetail)
|
||||
},
|
||||
renameItem() {
|
||||
let itemName = prompt(
|
||||
|
||||
@@ -142,16 +142,16 @@
|
||||
|
||||
// Send request to get share link
|
||||
axios
|
||||
.post('/api/share/generate', this.shareOptions)
|
||||
.post('/api/share', this.shareOptions)
|
||||
.then(response => {
|
||||
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
|
||||
this.shareLink = response.data.link
|
||||
this.shareLink = response.data.data.attributes.link
|
||||
this.isGeneratedShared = true
|
||||
|
||||
this.$store.commit('UPDATE_SHARED_ITEM', response.data)
|
||||
this.$store.commit('UPDATE_SHARED_ITEM', response.data.data.attributes)
|
||||
})
|
||||
.catch(error => {
|
||||
|
||||
|
||||
@@ -142,11 +142,7 @@
|
||||
|
||||
// Send delete request
|
||||
axios
|
||||
.delete('/api/share/remove', {
|
||||
params: {
|
||||
token: this.pickedItem.shared.token
|
||||
}
|
||||
})
|
||||
.delete('/api/share/' + this.pickedItem.shared.token)
|
||||
.then(() => {
|
||||
|
||||
// Remove item from file browser
|
||||
@@ -187,14 +183,18 @@
|
||||
|
||||
// Send request to get share link
|
||||
axios
|
||||
.post('/api/share/update', this.shareOptions)
|
||||
.patch('/api/share/' + this.shareOptions.token, {
|
||||
permission: this.shareOptions.permission,
|
||||
protected: this.shareOptions.isProtected,
|
||||
password: this.shareOptions.password ? this.shareOptions.password : undefined,
|
||||
})
|
||||
.then(response => {
|
||||
|
||||
// End loading
|
||||
this.isLoading = false
|
||||
|
||||
// Update shared data
|
||||
this.$store.commit('UPDATE_SHARED_ITEM', response.data)
|
||||
this.$store.commit('UPDATE_SHARED_ITEM', response.data.data.attributes)
|
||||
|
||||
events.$emit('popup:close')
|
||||
})
|
||||
|
||||
2
resources/js/helpers.js
vendored
2
resources/js/helpers.js
vendored
@@ -10,7 +10,7 @@ const Helpers = {
|
||||
|
||||
if (value === '') return
|
||||
|
||||
axios.put(this.$store.getters.api + route, {name, value})
|
||||
axios.patch(this.$store.getters.api + route, {name, value})
|
||||
.catch(error => {
|
||||
events.$emit('alert:open', {
|
||||
title: this.$t('popup_error.title'),
|
||||
|
||||
2
resources/js/store/modules/fileBrowser.js
vendored
2
resources/js/store/modules/fileBrowser.js
vendored
@@ -42,7 +42,7 @@ const actions = {
|
||||
location: folder.deleted_at || folder.location === 'trash' ? 'trash' : 'base'
|
||||
}
|
||||
|
||||
let url = currentFolder.location === 'trash' ?'/folder/' + currentFolder.unique_id + '?trash=true' : '/folder/' + currentFolder.unique_id
|
||||
let url = currentFolder.location === 'trash' ?'/folders/' + currentFolder.unique_id + '?trash=true' : '/folders/' + currentFolder.unique_id
|
||||
|
||||
axios
|
||||
.get(context.getters.api + url)
|
||||
|
||||
22
resources/js/store/modules/fileFunctions.js
vendored
22
resources/js/store/modules/fileFunctions.js
vendored
@@ -5,8 +5,7 @@ import i18n from '@/i18n/index'
|
||||
const actions = {
|
||||
moveItem: ({commit, getters}, [item_from, to_item]) => {
|
||||
axios
|
||||
.post(getters.api + '/move-item', {
|
||||
from_unique_id: item_from.unique_id,
|
||||
.patch(getters.api + '/move-item/' + item_from.unique_id, {
|
||||
from_type: item_from.type,
|
||||
to_unique_id: to_item.unique_id
|
||||
})
|
||||
@@ -36,7 +35,10 @@ const actions = {
|
||||
commit('UPDATE_NAME_IN_FAVOURITES', data)
|
||||
|
||||
axios
|
||||
.post(getters.api + '/rename-item', data)
|
||||
.patch(getters.api + '/rename-item/' + data.unique_id, {
|
||||
name: data.name,
|
||||
type: data.type,
|
||||
})
|
||||
.then(response => {
|
||||
commit('CHANGE_ITEM_NAME', response.data)
|
||||
})
|
||||
@@ -89,14 +91,13 @@ const actions = {
|
||||
commit('CLEAR_FILEINFO_DETAIL')
|
||||
|
||||
axios
|
||||
.post(getters.api + '/restore-item', {
|
||||
.patch(getters.api + '/restore-item/' + item.unique_id, {
|
||||
type: item.type,
|
||||
unique_id: item.unique_id,
|
||||
to_home: restoreToHome,
|
||||
})
|
||||
.catch(() => isSomethingWrong())
|
||||
},
|
||||
removeItem: ({commit, getters}, data) => {
|
||||
deleteItem: ({commit, getters}, data) => {
|
||||
|
||||
// Remove file
|
||||
commit('REMOVE_ITEM', data.unique_id)
|
||||
@@ -114,10 +115,11 @@ const actions = {
|
||||
commit('CLEAR_FILEINFO_DETAIL')
|
||||
|
||||
axios
|
||||
.post(getters.api + '/remove-item', {
|
||||
type: data.type,
|
||||
unique_id: data.unique_id,
|
||||
force_delete: data.deleted_at ? true : false
|
||||
.delete(getters.api + '/remove-item/' + data.unique_id, {
|
||||
data: {
|
||||
type: data.type,
|
||||
force_delete: data.deleted_at ? true : false
|
||||
}
|
||||
})
|
||||
.catch(() => isSomethingWrong())
|
||||
},
|
||||
|
||||
6
resources/js/store/modules/sharing.js
vendored
6
resources/js/store/modules/sharing.js
vendored
@@ -37,11 +37,13 @@ const actions = {
|
||||
location: 'public'
|
||||
}
|
||||
|
||||
let route = getters.sharedDetail.protected ? '/api/browse-private/' : '/api/browse-public/' + router.currentRoute.params.token +'/'
|
||||
let route = getters.sharedDetail.protected
|
||||
? '/api/folders/' + currentFolder.unique_id + '/private'
|
||||
: '/api/folders/' + currentFolder.unique_id + '/public/' + router.currentRoute.params.token +'/'
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
axios
|
||||
.get(route + currentFolder.unique_id)
|
||||
.get(route)
|
||||
.then(response => {
|
||||
|
||||
commit('LOADING_STATE', false)
|
||||
|
||||
6
resources/js/store/modules/userAuth.js
vendored
6
resources/js/store/modules/userAuth.js
vendored
@@ -42,7 +42,9 @@ const actions = {
|
||||
context.commit('ADD_TO_FAVOURITES', folder)
|
||||
|
||||
axios
|
||||
.post(context.getters.api + '/add-to-favourites', {unique_id: folder.unique_id})
|
||||
.post(context.getters.api + '/folders/favourites', {
|
||||
unique_id: folder.unique_id
|
||||
})
|
||||
.catch(() => {
|
||||
// Show error message
|
||||
events.$emit('alert:open', {
|
||||
@@ -57,7 +59,7 @@ const actions = {
|
||||
context.commit('REMOVE_ITEM_FROM_FAVOURITES', folder)
|
||||
|
||||
axios
|
||||
.post(context.getters.api + '/remove-from-favourites', {unique_id: folder.unique_id})
|
||||
.delete(context.getters.api + '/folders/favourites/' + folder.unique_id)
|
||||
.catch(() => {
|
||||
// Show error message
|
||||
events.$emit('alert:open', {
|
||||
|
||||
@@ -206,14 +206,14 @@
|
||||
.then(response => {
|
||||
|
||||
// Commit shared item options
|
||||
this.$store.commit('SET_SHARED_DETAIL', response.data)
|
||||
this.$store.commit('SET_PERMISSION', response.data.permission)
|
||||
this.$store.commit('SET_SHARED_DETAIL', response.data.data.attributes)
|
||||
this.$store.commit('SET_PERMISSION', response.data.data.attributes.permission)
|
||||
|
||||
// Hide page spinner
|
||||
this.isPageLoading = false
|
||||
|
||||
// Show password page
|
||||
if (response.data.protected) {
|
||||
if (response.data.data.attributes.protected) {
|
||||
this.currentPage = 'page-password'
|
||||
} else {
|
||||
this.currentPage = 'page-files'
|
||||
|
||||
@@ -29,10 +29,10 @@ Route::group(['middleware' => ['api']], function () {
|
||||
Route::post('/user/login', 'Auth\AuthController@login');
|
||||
|
||||
// Sharing
|
||||
Route::get('/folders/{unique_id}/public/{token}', 'Sharing\FileSharingController@get_public_folders');
|
||||
Route::post('/shared/authenticate/{token}', 'Sharing\FileSharingController@authenticate');
|
||||
Route::get('/browse-public/{token}/{unique_id}', 'Sharing\FileSharingController@browse_public');
|
||||
Route::get('/file-public/{token}', 'Sharing\FileSharingController@file_public');
|
||||
Route::get('/shared/{token}', 'Sharing\FileSharingController@show');
|
||||
Route::get('/shared/{token}', 'FileFunctions\ShareController@show');
|
||||
});
|
||||
|
||||
// User master Routes
|
||||
@@ -40,32 +40,32 @@ Route::group(['middleware' => ['auth:api', 'auth.cookie', 'scope:master']], func
|
||||
|
||||
// User
|
||||
Route::post('/user/password', 'User\AccountController@change_password');
|
||||
Route::put('/user/profile', 'User\AccountController@update_profile');
|
||||
Route::patch('/user/profile', 'User\AccountController@update_profile');
|
||||
Route::get('/user', 'User\AccountController@user');
|
||||
|
||||
// Browse
|
||||
Route::get('/folder/{unique_id}', 'FileBrowser\BrowseController@folder')->where('unique_id', '[0-9]+');
|
||||
Route::get('/file-detail/{unique_id}', 'FileBrowser\BrowseController@file_detail');
|
||||
Route::get('/folders/{unique_id}', 'FileBrowser\BrowseController@folder');
|
||||
Route::get('/folder-tree', 'FileBrowser\BrowseController@folder_tree');
|
||||
Route::get('/shared-all', 'FileBrowser\BrowseController@shared');
|
||||
Route::get('/search', 'FileBrowser\BrowseController@search');
|
||||
Route::get('/trash', 'FileBrowser\BrowseController@trash');
|
||||
|
||||
// Edit functions
|
||||
Route::post('/move-item', 'FileFunctions\EditController@move_item');
|
||||
Route::patch('/move-item/{unique_id}', 'FileFunctions\EditItemsController@move_item');
|
||||
|
||||
// Trash
|
||||
Route::post('/restore-item', 'FileFunctions\TrashController@restore');
|
||||
Route::patch('/restore-item/{unique_id}', 'FileFunctions\TrashController@restore');
|
||||
Route::delete('/empty-trash', 'FileFunctions\TrashController@clear');
|
||||
|
||||
// Favourites
|
||||
Route::post('/remove-from-favourites', 'FileFunctions\FavouriteController@remove_from_favourites');
|
||||
Route::post('/add-to-favourites', 'FileFunctions\FavouriteController@add_to_favourites');
|
||||
Route::delete('/folders/favourites/{unique_id}', 'FileFunctions\FavouriteController@destroy');
|
||||
Route::post('/folders/favourites', 'FileFunctions\FavouriteController@store');
|
||||
|
||||
// Share
|
||||
Route::delete('/share/remove', 'FileFunctions\ShareController@delete');
|
||||
Route::post('/share/generate', 'FileFunctions\ShareController@store');
|
||||
Route::post('/share/update', 'FileFunctions\ShareController@update');
|
||||
Route::delete('/share/{token}', 'FileFunctions\ShareController@destroy');
|
||||
Route::patch('/share/{token}', 'FileFunctions\ShareController@update');
|
||||
Route::post('/share', 'FileFunctions\ShareController@store');
|
||||
|
||||
// Auth
|
||||
Route::get('/logout', 'Auth\AuthController@logout');
|
||||
@@ -75,7 +75,7 @@ Route::group(['middleware' => ['auth:api', 'auth.cookie', 'scope:master']], func
|
||||
Route::group(['middleware' => ['auth:api', 'auth.cookie', 'scope:visitor,editor']], function () {
|
||||
|
||||
// Browse folders & files
|
||||
Route::get('/browse-private/{unique_id}', 'Sharing\FileSharingController@browse_private');
|
||||
Route::get('/folders/{unique_id}/private', 'Sharing\FileSharingController@get_private_folders');
|
||||
Route::get('/file-private', 'Sharing\FileSharingController@file_private');
|
||||
});
|
||||
|
||||
@@ -91,8 +91,8 @@ Route::group(['middleware' => ['auth:api', 'auth.cookie', 'scope:master,editor,v
|
||||
Route::group(['middleware' => ['auth:api', 'auth.cookie', 'scope:master,editor']], function () {
|
||||
|
||||
// Edit items
|
||||
Route::post('/create-folder', 'FileFunctions\EditController@create_folder');
|
||||
Route::post('/rename-item', 'FileFunctions\EditController@rename_item');
|
||||
Route::post('/remove-item', 'FileFunctions\EditController@delete_item');
|
||||
Route::post('/upload-file', 'FileFunctions\EditController@upload_item');
|
||||
Route::delete('/remove-item/{unique_id}', 'FileFunctions\EditItemsController@delete_item');
|
||||
Route::patch('/rename-item/{unique_id}', 'FileFunctions\EditItemsController@rename_item');
|
||||
Route::post('/create-folder', 'FileFunctions\EditItemsController@create_folder');
|
||||
Route::post('/upload-file', 'FileFunctions\EditItemsController@upload_item');
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user