diff --git a/app/Http/Controllers/FileFunctions/EditItemsController.php b/app/Http/Controllers/FileFunctions/EditItemsController.php index 39369c26..7a6b451f 100644 --- a/app/Http/Controllers/FileFunctions/EditItemsController.php +++ b/app/Http/Controllers/FileFunctions/EditItemsController.php @@ -84,15 +84,15 @@ class EditItemsController extends Controller * Rename item for authenticated master|editor user * * @param RenameItemRequest $request - * @param $unique_id + * @param $id * @return mixed * @throws Exception */ - public function user_rename_item(RenameItemRequest $request, $unique_id) + public function user_rename_item(RenameItemRequest $request, $id) { // Demo preview if (is_demo(Auth::id())) { - return Demo::rename_item($request, $unique_id); + return Demo::rename_item($request, $id); } // Check permission to rename item for authenticated editor @@ -105,7 +105,7 @@ class EditItemsController extends Controller $shared = get_shared($request->cookie('shared_token')); // Get file|folder item - $item = get_item($request->type, $unique_id, Auth::id()); + $item = get_item($request->type, $id); // Check access to requested directory if ($request->type === 'folder') { @@ -118,11 +118,11 @@ class EditItemsController extends Controller // If request have a change folder icon values set the folder icon if ($request->type === 'folder' && $request->filled('folder_icon')) { - Editor::set_folder_icon($request->folder_icon, $unique_id); + Editor::set_folder_icon($request->folder_icon, $id); } // Rename Item - return Editor::rename_item($request, $unique_id); + return Editor::rename_item($request, $id); } /** diff --git a/app/Http/Helpers/helpers.php b/app/Http/Helpers/helpers.php index 0266108c..7592570f 100644 --- a/app/Http/Helpers/helpers.php +++ b/app/Http/Helpers/helpers.php @@ -191,25 +191,12 @@ function is_demo($user_id) * Get folder or file item * * @param $type - * @param $unique_id - * @param $user_id + * @param $id * @return \Illuminate\Database\Eloquent\Builder|Model */ -function get_item($type, $unique_id, $user_id) +function get_item($type, $id) { - - if ($type === 'folder') { - - // Return folder item - return Folder::where('unique_id', $unique_id) - ->where('user_id', $user_id) - ->firstOrFail(); - } - - // Return file item - return File::where('unique_id', $unique_id) - ->where('user_id', $user_id) - ->firstOrFail(); + return ('App\\Models\\' . ucfirst($type))::find($id); } /** diff --git a/app/Http/Requests/FileFunctions/CreateFolderRequest.php b/app/Http/Requests/FileFunctions/CreateFolderRequest.php index 272697d0..4dd9f9b9 100644 --- a/app/Http/Requests/FileFunctions/CreateFolderRequest.php +++ b/app/Http/Requests/FileFunctions/CreateFolderRequest.php @@ -25,8 +25,8 @@ class CreateFolderRequest extends FormRequest public function rules() { return [ - 'parent_id' => 'required|integer', - 'name' => 'string', + 'parent_id' => 'nullable|uuid', + 'name' => 'required|string', ]; } } diff --git a/app/Http/Tools/Editor.php b/app/Http/Tools/Editor.php index 31341d14..9457eafa 100644 --- a/app/Http/Tools/Editor.php +++ b/app/Http/Tools/Editor.php @@ -3,12 +3,12 @@ namespace App\Http\Tools; use App; -use App\Share; -use App\File; -use App\Folder; +use App\Models\Folder; +use App\Models\Share; +use App\File as UserFile; use App\Http\Requests\FileFunctions\RenameItemRequest; -use App\User; -use App\Zip; +use App\Models\User; +use App\Models\Zip; use Aws\Exception\MultipartUploadException; use Aws\S3\MultipartUploader; use Carbon\Carbon; @@ -222,15 +222,15 @@ class Editor public static function create_folder($request, $shared = null) { // Get variables - $user_scope = is_null($shared) ? $request->user()->token()->scopes[0] : 'editor'; + //$user_scope = is_null($shared) ? $request->user()->token()->scopes[0] : 'editor'; + $user_scope = is_null($shared) ? 'master' : 'editor'; + $name = $request->has('name') ? $request->input('name') : 'New Folder'; $user_id = is_null($shared) ? Auth::id() : $shared->user_id; - $unique_id = get_unique_id(); // Create folder $folder = Folder::create([ 'parent_id' => $request->parent_id, - 'unique_id' => $unique_id, 'user_scope' => $user_scope, 'user_id' => $user_id, 'type' => 'folder', @@ -308,7 +308,7 @@ class Editor $child_folders = filter_folders_ids($folder->trashed_folders, 'unique_id'); // Get children files - $files = File::onlyTrashed() + $files = UserFile::onlyTrashed() ->where('user_id', $user->id) ->whereIn('folder_id', Arr::flatten([$unique_id, $child_folders])) ->get(); @@ -412,7 +412,7 @@ class Editor } else { // Move file under new folder - $item = File::where('user_id', $user_id) + $item = UserFile::where('user_id', $user_id) ->where('unique_id', $unique_id) ->firstOrFail(); @@ -523,7 +523,7 @@ class Editor } // Return new file - return File::create($options); + return UserFile::create($options); } } diff --git a/routes/api.php b/routes/api.php index 3d4941f4..6cc6bc59 100644 --- a/routes/api.php +++ b/routes/api.php @@ -88,10 +88,10 @@ Route::group(['middleware' => ['auth:api', 'auth.shared', 'scope:visitor,editor' }); // User master,editor routes -Route::group(['middleware' => ['auth:api', 'auth.shared', 'auth.master', 'scope:master,editor']], function () { +Route::group(['middleware' => ['auth:sanctum']], function () { // Edit items - Route::patch('/rename-item/{unique_id}', [EditItemsController::class, 'user_rename_item']); + Route::patch('/rename/{id}', [EditItemsController::class, 'user_rename_item']); Route::post('/create-folder', [EditItemsController::class, 'user_create_folder']); Route::post('/remove-item', [EditItemsController::class, 'user_delete_item']); Route::post('/zip', [EditItemsController::class, 'user_zip_multiple_files']); diff --git a/tests/Feature/FolderTest.php b/tests/Feature/FolderTest.php index 10d596a2..9e9f6d57 100644 --- a/tests/Feature/FolderTest.php +++ b/tests/Feature/FolderTest.php @@ -3,9 +3,9 @@ namespace Tests\Feature; use App\Models\Folder; +use App\Models\User; use Illuminate\Foundation\Testing\DatabaseMigrations; -use Illuminate\Foundation\Testing\RefreshDatabase; -use Illuminate\Foundation\Testing\WithFaker; +use Laravel\Sanctum\Sanctum; use Tests\TestCase; class FolderTest extends TestCase @@ -25,14 +25,57 @@ class FolderTest extends TestCase ]); } + /** + * @test + */ public function it_create_new_folder() { + $user = User::factory(User::class) + ->create(); + Sanctum::actingAs($user); + + // TODO: pridat do api skupiny + $this->postJson('/api/create-folder', [ + 'name' => 'New Folder', + 'parent_id' => null, + ]) + ->assertStatus(201) + ->assertJsonFragment([ + 'name' => 'New Folder', + ]); + + $this->assertDatabaseHas('folders', [ + 'name' => 'New Folder' + ]); } + /** + * @test + */ public function it_rename_folder() { + $folder = Folder::factory(Folder::class) + ->create(); + $user = User::factory(User::class) + ->create(); + + Sanctum::actingAs($user); + + // TODO: pridat do api skupiny + $this->patchJson("/api/rename/{$folder->id}", [ + 'name' => 'Renamed Folder', + 'type' => 'folder', + ]) + ->assertStatus(200) + ->assertJsonFragment([ + 'name' => 'Renamed Folder', + ]); + + $this->assertDatabaseHas('folders', [ + 'name' => 'Renamed Folder' + ]); } public function it_set_folder_emoji()