Skip to content

Commit 213c9a3

Browse files
committed
fix: resolving request input when "use_validated" config option is set to "true"
1 parent 7729ee4 commit 213c9a3

8 files changed

+35
-39
lines changed

src/Concerns/HandlesRelationManyToManyOperations.php

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ protected function attachWithTransaction(Request $request, $parentKey)
5454
$attachResult = $this->performAttach(
5555
$request,
5656
$parentEntity,
57-
config('orion.use_validated')
58-
? $request->validated('resources')
59-
: $request->get('resources'),
57+
$this->retrieve($request, 'resources'),
6058
$request->get('duplicates', false)
6159
);
6260

@@ -276,9 +274,7 @@ protected function detachWithTransaction(Request $request, $parentKey)
276274
$detachResult = $this->performDetach(
277275
$request,
278276
$parentEntity,
279-
config('orion.use_validated')
280-
? $request->validated('resources')
281-
: $request->get('resources')
277+
$this->retrieve($request, 'resources')
282278
);
283279

284280
$afterHookResult = $this->afterDetach($request, $parentEntity, $detachResult);
@@ -401,9 +397,7 @@ protected function syncWithTransaction(Request $request, $parentKey)
401397
$syncResult = $this->performSync(
402398
$request,
403399
$parentEntity,
404-
config('orion.use_validated')
405-
? $request->validated('resources')
406-
: $request->get('resources'),
400+
$this->retrieve($request, 'resources'),
407401
$request->get('detaching', true)
408402
);
409403

@@ -529,9 +523,7 @@ protected function toggleWithTransaction(Request $request, $parentKey)
529523
$toggleResult = $this->performToggle(
530524
$request,
531525
$parentEntity,
532-
config('orion.use_validated')
533-
? $request->validated('resources')
534-
: $request->get('resources')
526+
$this->retrieve($request, 'resources')
535527
);
536528

537529
$afterHookResult = $this->afterToggle($request, $parentEntity, $toggleResult);

src/Concerns/HandlesRelationStandardBatchOperations.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,7 @@ protected function batchStoreWithTransaction(Request $request, $parentKey)
5353
return $beforeHookResult;
5454
}
5555

56-
$resources = config('orion.use_validated')
57-
? $request->validated('resources', [])
58-
: $request->get('resources', []);
56+
$resources = $this->retrieve($request, 'resources', []);
5957
$entities = collect([]);
6058

6159
$requestedRelations = $this->relationsResolver->requestedRelations($request);
@@ -204,9 +202,7 @@ protected function batchUpdateWithTransaction(Request $request, $parentKey)
204202
/** @var Model $entity */
205203
$this->authorize($this->resolveAbility('update'), [$entity, $parentEntity]);
206204

207-
$resource = config('orion.use_validated')
208-
? $request->validated("resources.{$entity->{$this->keyName()}}")
209-
: $request->input("resources.{$entity->{$this->keyName()}}");
205+
$resource = $this->retrieve($request, "resources.{$entity->{$this->keyName()}}");
210206

211207
$this->beforeUpdate($request, $parentEntity, $entity);
212208
$this->beforeSave($request, $parentEntity, $entity);

src/Concerns/HandlesRelationStandardOperations.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -305,9 +305,7 @@ protected function storeWithTransaction(Request $request, $parentKey)
305305
$request,
306306
$parentEntity,
307307
$entity,
308-
config('orion.use_validated')
309-
? $request->validated()
310-
: $request->all(),
308+
$this->retrieve($request),
311309
$request->get('pivot', [])
312310
);
313311

@@ -713,9 +711,7 @@ protected function updateWithTransaction(Request $request, $parentKey, $relatedK
713711
$request,
714712
$parentEntity,
715713
$entity,
716-
config('orion.use_validated')
717-
? $request->validated()
718-
: $request->all(),
714+
$this->retrieve($request),
719715
$request->get('pivot', [])
720716
);
721717

src/Concerns/HandlesStandardBatchOperations.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,7 @@ protected function batchStoreWithTransaction(Request $request)
4646

4747
$this->authorize($this->resolveAbility('create'), $resourceModelClass);
4848

49-
$resources = config('orion.use_validated')
50-
? $request->validated('resources', [])
51-
: $request->get('resources', []);
49+
$resources = $this->retrieve($request, 'resources', []);
5250
$entities = collect([]);
5351

5452
$requestedRelations = $this->relationsResolver->requestedRelations($request);
@@ -156,9 +154,7 @@ protected function batchUpdateWithTransaction(Request $request)
156154
$this->performUpdate(
157155
$request,
158156
$entity,
159-
config('orion.use_validated')
160-
? $request->validated("resources.{$entity->{$this->keyName()}}")
161-
: $request->input("resources.{$entity->{$this->keyName()}}")
157+
$this->retrieve($request, "resources.{$entity->{$this->keyName()}}")
162158
);
163159

164160
$this->beforeUpdateFresh($request, $entity);

src/Concerns/HandlesStandardOperations.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,7 @@ protected function storeWithTransaction(Request $request)
198198
$this->performStore(
199199
$request,
200200
$entity,
201-
config('orion.use_validated')
202-
? $request->validated()
203-
: $request->all()
201+
$this->retrieve($request)
204202
);
205203

206204
$beforeStoreFreshResult = $this->beforeStoreFresh($request, $entity);
@@ -485,9 +483,7 @@ protected function updateWithTransaction(Request $request, $key)
485483
$this->performUpdate(
486484
$request,
487485
$entity,
488-
config('orion.use_validated')
489-
? $request->validated()
490-
: $request->all()
486+
$this->retrieve($request)
491487
);
492488

493489
$beforeUpdateFreshResult = $this->beforeUpdateFresh($request, $entity);

src/Http/Controllers/BaseController.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
1111
use Illuminate\Foundation\Bus\DispatchesJobs;
1212
use Illuminate\Foundation\Validation\ValidatesRequests;
13+
use Illuminate\Support\Arr;
1314
use Illuminate\Support\Facades\App;
1415
use Illuminate\Support\Facades\Auth;
1516
use Orion\Concerns\BuildsResponses;
@@ -626,4 +627,25 @@ protected function shouldPaginate(Request $request, int $paginationLimit): bool
626627

627628
return !property_exists($this, 'paginationDisabled');
628629
}
630+
631+
/**
632+
* Retrieves data from the request
633+
*
634+
* @param Request $request
635+
* @param string|null $key
636+
* @param null $default
637+
* @return mixed
638+
*/
639+
protected function retrieve(Request $request, ?string $key = null, $default = null)
640+
{
641+
if (!config('orion.use_validated')) {
642+
return $key ? $request->get($key, $default) : $request->all();
643+
}
644+
645+
if (!$key) {
646+
return $request->validated();
647+
}
648+
649+
return Arr::get($request->safe([$key]), $key, $default);
650+
}
629651
}

tests/Feature/Relations/BelongsTo/BelongsToRelationStandardUpdateOperationsTest.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
namespace Orion\Tests\Feature\Relations\BelongsTo;
44

55
use Illuminate\Support\Facades\Gate;
6-
use Mockery;
7-
use Orion\Contracts\ComponentsResolver;
86
use Orion\Tests\Feature\TestCase;
97
use Orion\Tests\Fixtures\App\Http\Requests\UserRequest;
108
use Orion\Tests\Fixtures\App\Http\Resources\SampleResource;

tests/Feature/Relations/BelongsToMany/BelongsToManyRelationManyToManyOperationsTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -754,4 +754,4 @@ public function updating_pivot_of_relation_resource_casted_to_json_pivot_field()
754754
['references' => ['key' => 'value']]
755755
);
756756
}
757-
}
757+
}

0 commit comments

Comments
 (0)