backend refactoring

This commit is contained in:
carodej
2020-04-27 08:34:09 +02:00
parent 586f0bba68
commit 65147870fd
22 changed files with 322 additions and 169 deletions

View File

@@ -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;

View File

@@ -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']);

View File

@@ -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);
}
}

View File

@@ -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) {

View File

@@ -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];
}
}

View 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',
];
}
}

View 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',
];
}
}

View 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',
];
}
}

View 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,
]
]
];
}
}

View File

@@ -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"
}

View File

@@ -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

View File

@@ -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 = []

View File

@@ -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(

View File

@@ -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 => {

View File

@@ -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')
})

View File

@@ -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'),

View File

@@ -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)

View File

@@ -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())
},

View File

@@ -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)

View File

@@ -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', {

View File

@@ -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'

View File

@@ -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');
});