diff --git a/app/Http/Controllers/FileFunctions/EditController.php b/app/Http/Controllers/FileFunctions/EditItemsController.php similarity index 92% rename from app/Http/Controllers/FileFunctions/EditController.php rename to app/Http/Controllers/FileFunctions/EditItemsController.php index baf27f13..0c85006f 100644 --- a/app/Http/Controllers/FileFunctions/EditController.php +++ b/app/Http/Controllers/FileFunctions/EditItemsController.php @@ -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; diff --git a/app/Http/Controllers/FileFunctions/FavouriteController.php b/app/Http/Controllers/FileFunctions/FavouriteController.php index 1bca8335..783c502e 100644 --- a/app/Http/Controllers/FileFunctions/FavouriteController.php +++ b/app/Http/Controllers/FileFunctions/FavouriteController.php @@ -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']); diff --git a/app/Http/Controllers/FileFunctions/ShareController.php b/app/Http/Controllers/FileFunctions/ShareController.php index e453190a..9ea3ffe9 100644 --- a/app/Http/Controllers/FileFunctions/ShareController.php +++ b/app/Http/Controllers/FileFunctions/ShareController.php @@ -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); } } diff --git a/app/Http/Controllers/FileFunctions/TrashController.php b/app/Http/Controllers/FileFunctions/TrashController.php index ede6963a..1e52465a 100644 --- a/app/Http/Controllers/FileFunctions/TrashController.php +++ b/app/Http/Controllers/FileFunctions/TrashController.php @@ -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) { diff --git a/app/Http/Controllers/Sharing/FileSharingController.php b/app/Http/Controllers/Sharing/FileSharingController.php index 8be39bbc..6561194d 100644 --- a/app/Http/Controllers/Sharing/FileSharingController.php +++ b/app/Http/Controllers/Sharing/FileSharingController.php @@ -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]; + } } diff --git a/app/Http/Requests/Share/AuthenticateShareRequest.php b/app/Http/Requests/Share/AuthenticateShareRequest.php new file mode 100644 index 00000000..0813ed7d --- /dev/null +++ b/app/Http/Requests/Share/AuthenticateShareRequest.php @@ -0,0 +1,20 @@ + 'required|string', + ]; + } +} diff --git a/app/Http/Requests/Share/CreateShareRequest.php b/app/Http/Requests/Share/CreateShareRequest.php new file mode 100644 index 00000000..0b34e4c0 --- /dev/null +++ b/app/Http/Requests/Share/CreateShareRequest.php @@ -0,0 +1,35 @@ + 'required|boolean', + 'unique_id' => 'required|integer', + 'type' => 'required|string', + 'permission' => 'string', + 'password' => 'string', + ]; + } +} diff --git a/app/Http/Requests/Share/UpdateShareRequest.php b/app/Http/Requests/Share/UpdateShareRequest.php new file mode 100644 index 00000000..f618a98a --- /dev/null +++ b/app/Http/Requests/Share/UpdateShareRequest.php @@ -0,0 +1,33 @@ + 'required|boolean', + 'permission' => 'required|string', + 'password' => 'string', + ]; + } +} diff --git a/app/Http/Resources/ShareResource.php b/app/Http/Resources/ShareResource.php new file mode 100644 index 00000000..cbd4a726 --- /dev/null +++ b/app/Http/Resources/ShareResource.php @@ -0,0 +1,34 @@ + [ + '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, + ] + ] + ]; + } +} diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 6448a87f..6208fc4e 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -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" } diff --git a/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue b/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue index f9f19d11..a1be9755 100644 --- a/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue +++ b/resources/js/components/VueFileManagerComponents/FilesView/ContextMenu.vue @@ -8,7 +8,7 @@ > @@ -36,7 +36,7 @@ - @@ -58,7 +58,7 @@ - @@ -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( diff --git a/resources/js/components/VueFileManagerComponents/Others/ShareCreate.vue b/resources/js/components/VueFileManagerComponents/Others/ShareCreate.vue index dc281474..eb268a3e 100644 --- a/resources/js/components/VueFileManagerComponents/Others/ShareCreate.vue +++ b/resources/js/components/VueFileManagerComponents/Others/ShareCreate.vue @@ -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 => { diff --git a/resources/js/components/VueFileManagerComponents/Others/ShareEdit.vue b/resources/js/components/VueFileManagerComponents/Others/ShareEdit.vue index bc7bbdf7..5ea6e0b5 100644 --- a/resources/js/components/VueFileManagerComponents/Others/ShareEdit.vue +++ b/resources/js/components/VueFileManagerComponents/Others/ShareEdit.vue @@ -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') }) diff --git a/resources/js/helpers.js b/resources/js/helpers.js index 77c61825..dd17193c 100644 --- a/resources/js/helpers.js +++ b/resources/js/helpers.js @@ -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'), diff --git a/resources/js/store/modules/fileBrowser.js b/resources/js/store/modules/fileBrowser.js index 995bdc27..fbf53c8e 100644 --- a/resources/js/store/modules/fileBrowser.js +++ b/resources/js/store/modules/fileBrowser.js @@ -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) diff --git a/resources/js/store/modules/fileFunctions.js b/resources/js/store/modules/fileFunctions.js index 96986e25..130e135b 100644 --- a/resources/js/store/modules/fileFunctions.js +++ b/resources/js/store/modules/fileFunctions.js @@ -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()) }, diff --git a/resources/js/store/modules/sharing.js b/resources/js/store/modules/sharing.js index 8385deb9..bcb09c09 100644 --- a/resources/js/store/modules/sharing.js +++ b/resources/js/store/modules/sharing.js @@ -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) diff --git a/resources/js/store/modules/userAuth.js b/resources/js/store/modules/userAuth.js index a905e436..105de29d 100644 --- a/resources/js/store/modules/userAuth.js +++ b/resources/js/store/modules/userAuth.js @@ -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', { diff --git a/resources/js/views/Shared/SharedContent.vue b/resources/js/views/Shared/SharedContent.vue index e0007b3c..839ecfc0 100644 --- a/resources/js/views/Shared/SharedContent.vue +++ b/resources/js/views/Shared/SharedContent.vue @@ -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' diff --git a/routes/api.php b/routes/api.php index 8ba73bf1..fa54541e 100644 --- a/routes/api.php +++ b/routes/api.php @@ -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'); });