bulk-operations v0.1 user_move, guest_move BE

This commit is contained in:
Milos Holba
2020-11-03 15:36:08 +01:00
parent 382756a6f0
commit f33f93006e
5 changed files with 61 additions and 48 deletions

View File

@@ -323,28 +323,28 @@ class EditItemsController extends Controller
* @param $unique_id * @param $unique_id
* @return ResponseFactory|\Illuminate\Http\Response * @return ResponseFactory|\Illuminate\Http\Response
*/ */
public function user_move(MoveItemRequest $request, $unique_id) public function user_move(MoveItemRequest $request)
{ {
// Demo preview // Demo preview
if (is_demo(Auth::id())) { if (is_demo(Auth::id())) {
return Demo::response_204(); return Demo::response_204();
} }
$to_unique_id = $request->input('to_unique_id');
// Check permission to upload for authenticated editor // Check permission to upload for authenticated editor
if ($request->user()->tokenCan('editor')) { if ($request->user()->tokenCan('editor')) {
// check if shared_token cookie exist
if (!$request->hasCookie('shared_token')) abort('401');
// check if shared_token cookie exist // Get shared token
if (!$request->hasCookie('shared_token')) abort('401'); $shared = get_shared($request->cookie('shared_token'));
// Get shared token
$shared = get_shared($request->cookie('shared_token'));
// Check access to requested directory
Guardian::check_item_access($request->to_unique_id, $shared);
}
// Check access to requested directory
Guardian::check_item_access($to_unique_id, $shared);
}
// Move item // Move item
Editor::move($request, $unique_id); Editor::move($request, $to_unique_id);
return response('Done!', 204); return response('Done!', 204);
} }
@@ -357,11 +357,14 @@ class EditItemsController extends Controller
* @param $token * @param $token
* @return ResponseFactory|\Illuminate\Http\Response * @return ResponseFactory|\Illuminate\Http\Response
*/ */
public function guest_move(MoveItemRequest $request, $unique_id, $token) public function guest_move(MoveItemRequest $request, $token)
{ {
// Get shared record // Get shared record
$shared = get_shared($token); $shared = get_shared($token);
//Unique id of Folder where move
$to_unique_id = $request->input('to_unique_id');
// Demo preview // Demo preview
if (is_demo(Auth::id())) { if (is_demo(Auth::id())) {
return Demo::response_204(); return Demo::response_204();
@@ -370,23 +373,28 @@ class EditItemsController extends Controller
// Check shared permission // Check shared permission
if (!is_editor($shared)) abort(403); if (!is_editor($shared)) abort(403);
$moving_unique_id = $unique_id; foreach($request->input('items') as $item) {
if ($request->from_type !== 'folder') { $unique_id = $item['unique_id'];
$file = FileManagerFile::where('unique_id', $unique_id) $moving_unique_id = $unique_id;
->where('user_id', $shared->user_id)
->firstOrFail();
$moving_unique_id = $file->folder_id; if ($item['type'] !== 'folder') {
$file = FileManagerFile::where('unique_id', $unique_id)
->where('user_id', $shared->user_id)
->firstOrFail();
$moving_unique_id = $file->folder_id;
}
// Check access to requested item
Guardian::check_item_access([
$to_unique_id, $moving_unique_id
], $shared);
} }
// Check access to requested item
Guardian::check_item_access([
$request->to_unique_id, $moving_unique_id
], $shared);
// Move item // Move item
Editor::move($request, $unique_id, $shared); Editor::move($request, $to_unique_id, $shared);
return response('Done!', 204); return response('Done!', 204);
} }

View File

@@ -27,7 +27,7 @@ class DeleteItemRequest extends FormRequest
return [ return [
'data[*].force_delete' => 'required|boolean', 'data[*].force_delete' => 'required|boolean',
'data[*].type' => 'required|string', 'data[*].type' => 'required|string',
'data[*].unique_id' => 'required|numeric' 'data[*].unique_id' => 'required|integer'
]; ];
} }
} }

View File

@@ -25,8 +25,9 @@ class MoveItemRequest extends FormRequest
public function rules() public function rules()
{ {
return [ return [
'to_unique_id' => 'required|integer', 'to_unique_id' => 'required|integer',
'from_type' => 'required|string', 'items[*].type' => 'required|string',
'items[*].unique_id' => 'required|integer',
]; ];
} }
} }

View File

@@ -201,32 +201,36 @@ class Editor
* @param $unique_id * @param $unique_id
* @param null $shared * @param null $shared
*/ */
public static function move($request, $unique_id, $shared = null) public static function move($request, $to_unique_id, $shared = null)
{ {
// Get user id // Get user id
$user_id = is_null($shared) ? Auth::id() : $shared->user_id; $user_id = is_null($shared) ? Auth::id() : $shared->user_id;
if ($request->from_type === 'folder') { foreach($request->input('items') as $item) {
$unique_id = $item['unique_id'];
// Move folder if ($item['type'] === 'folder') {
$item = FileManagerFolder::where('user_id', $user_id)
->where('unique_id', $unique_id)
->firstOrFail();
$item->update([ // Move folder
'parent_id' => $request->to_unique_id $item = FileManagerFolder::where('user_id', $user_id)
]); ->where('unique_id', $unique_id)
->firstOrFail();
} else { $item->update([
'parent_id' => $to_unique_id
]);
// Move file under new folder } else {
$item = FileManagerFile::where('user_id', $user_id)
->where('unique_id', $unique_id)
->firstOrFail();
$item->update([ // Move file under new folder
'folder_id' => $request->to_unique_id $item = FileManagerFile::where('user_id', $user_id)
]); ->where('unique_id', $unique_id)
->firstOrFail();
$item->update([
'folder_id' => $to_unique_id
]);
}
} }
} }

View File

@@ -47,7 +47,7 @@ Route::group(['middleware' => ['api']], function () {
Route::post('/remove-item/public/{token}', 'FileFunctions\EditItemsController@guest_delete_item'); Route::post('/remove-item/public/{token}', 'FileFunctions\EditItemsController@guest_delete_item');
Route::patch('/rename-item/{unique_id}/public/{token}', 'FileFunctions\EditItemsController@guest_rename_item'); Route::patch('/rename-item/{unique_id}/public/{token}', 'FileFunctions\EditItemsController@guest_rename_item');
Route::post('/create-folder/public/{token}', 'FileFunctions\EditItemsController@guest_create_folder'); Route::post('/create-folder/public/{token}', 'FileFunctions\EditItemsController@guest_create_folder');
Route::patch('/move/{unique_id}/public/{token}', 'FileFunctions\EditItemsController@guest_move'); Route::post('/move/public/{token}', 'FileFunctions\EditItemsController@guest_move');
Route::post('/upload/public/{token}', 'FileFunctions\EditItemsController@guest_upload'); Route::post('/upload/public/{token}', 'FileFunctions\EditItemsController@guest_upload');
// Sharing page browsing // Sharing page browsing
@@ -187,6 +187,6 @@ Route::group(['middleware' => ['auth:api', 'auth.shared', 'auth.master', 'scope:
Route::post('/remove-item', 'FileFunctions\EditItemsController@user_delete_item'); Route::post('/remove-item', 'FileFunctions\EditItemsController@user_delete_item');
Route::patch('/rename-item/{unique_id}', 'FileFunctions\EditItemsController@user_rename_item'); Route::patch('/rename-item/{unique_id}', 'FileFunctions\EditItemsController@user_rename_item');
Route::post('/create-folder', 'FileFunctions\EditItemsController@user_create_folder'); Route::post('/create-folder', 'FileFunctions\EditItemsController@user_create_folder');
Route::patch('/move/{unique_id}', 'FileFunctions\EditItemsController@user_move'); Route::post('/move', 'FileFunctions\EditItemsController@user_move');
Route::post('/upload', 'FileFunctions\EditItemsController@user_upload'); Route::post('/upload', 'FileFunctions\EditItemsController@user_upload');
}); });