/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { $file = $request->file('file'); $folder = Folder::findOrFail($request->current_folder); $file_original_name = str_slug(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)); $extension = $file->getClientOriginalExtension(); $file_path = 'documents/' . $request->user()->slug . '/' . current_folder_path($folder); $file_name_on_disk = $file_original_name . str_random(20) . '.' . $extension; $file_name = $file_original_name . '.' . $extension; $file_slug = '@' . $file_name; $complete_path = $file_path . $file_name_on_disk; if (\File::exists($complete_path)) { abort(403, "A file with this name already exists within this folder."); } $file->move($file_path, $file_name_on_disk); try { $request->user()->files()->create(['folder_id' => $folder->id, 'path' => $complete_path, 'name' => $file_name, 'name_on_disk' => $file_name_on_disk, 'slug' => $file_slug]); } catch (\Exception $e) { return response()->json(['message' => 'File was not created', 'description' => $e->getMessage()], 403); } return response()->json(['message' => 'File created correctly', 'description' => 'A file was uploaded and stored correctly at ' . $complete_path], 201); }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $slug, $id) { $user = User::find($id); $this->authorize('show-user', $user); if ($request->password && $request->password_confirmation) { $this->validate($request, ['password' => 'required|confirmed']); $credentials = $request->only('name', 'email', 'password', 'password_confirmation'); $user->password = bcrypt($credentials['password']); } $old_path = 'documents/' . $user->slug; $user->name = $request->name; $user->slug = '@' . str_slug($request->name); // $user->email = $request->email; $user->save(); $folders = $user->folders()->get(); $folders->each(function ($folder, $key) use($user) { if ($folder->parent_folder_id > 0) { $new_path = 'documents/' . $user->slug . '/' . current_folder_path(Folder::find($folder->parent_folder_id)) . $folder->slug; $folder->files()->get()->each(function ($file, $key) use($new_path) { $file->path = $new_path . '/' . $file->name_on_disk; $file->save(); }); } }); \File::move(public_path($old_path), public_path('documents/' . $user->slug)); return redirect('/dashboard/users/' . $user->slug . '/' . $user->id); }
/** * Remove the specified resource from storage. * * @param int $id * @return \Illuminate\Http\Response */ public function destroy($id) { $folder = Folder::find($id); try { \File::deleteDirectory(public_path('documents/' . $folder->user()->first()->slug . '/' . current_folder_path($folder))); $folder->delete(); } catch (\Exception $e) { return response()->json(['message' => 'Folder was not deleted', 'description' => $e->getMessage()], 403); } return response()->json(['message' => 'Folder deleted correctly', 'description' => 'Folder deleted correctly'], 201); }