Skip to content

Commit fe3f3de

Browse files
authored
Merge pull request #135 from marcvdm/relation-model-policies
feat: pass parent entity to policies
2 parents 44626e4 + d1e9713 commit fe3f3de

File tree

4 files changed

+20
-20
lines changed

4 files changed

+20
-20
lines changed

src/Concerns/HandlesRelationManyToManyOperations.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,7 +632,7 @@ protected function updatePivotWithTransaction(Request $request, $parentKey, $rel
632632
$query = $this->buildShowFetchQuery($request, $parentEntity, []);
633633
$entity = $this->runShowFetchQuery($request, $query, $parentEntity, $relatedKey);
634634

635-
$this->authorize('update', $entity);
635+
$this->authorize('update', [$entity, $parentEntity]);
636636

637637
$updateResult = $this->performUpdatePivot($request, $parentEntity, $relatedKey, $request->get('pivot', []));
638638

src/Concerns/HandlesRelationOneToManyOperations.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ protected function associateWithTransaction(Request $request, $parentKey)
5252
}
5353

5454
$this->authorize('view', $parentEntity);
55-
$this->authorize('update', $entity);
55+
$this->authorize('update', [$entity, $parentEntity]);
5656

5757
$this->performAssociate($request, $parentEntity, $entity);
5858

@@ -204,7 +204,7 @@ protected function dissociateWithTransaction(Request $request, $parentKey, $rela
204204
return $beforeHookResult;
205205
}
206206

207-
$this->authorize('update', $entity);
207+
$this->authorize('update', [$entity, $parentEntity]);
208208

209209
$this->performDissociate($request, $parentEntity, $entity);
210210

src/Concerns/HandlesRelationStandardBatchOperations.php

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ public function batchStore(Request $request, $parentKey)
4141
*/
4242
protected function batchStoreWithTransaction(Request $request, $parentKey)
4343
{
44-
$resourceModelClass = $this->resolveResourceModelClass();
45-
46-
$this->authorize('create', $resourceModelClass);
47-
4844
$parentQuery = $this->buildBatchStoreParentFetchQuery($request, $parentKey);
4945
$parentEntity = $this->runBatchStoreParentFetchQuery($request, $parentQuery, $parentKey);
5046

47+
$resourceModelClass = $this->resolveResourceModelClass();
48+
49+
$this->authorize('create', [$resourceModelClass, $parentEntity]);
50+
5151
$beforeHookResult = $this->beforeBatchStore($request, $parentEntity);
5252
if ($this->hookResponds($beforeHookResult)) {
5353
return $beforeHookResult;
@@ -194,7 +194,7 @@ protected function batchUpdateWithTransaction(Request $request, $parentKey)
194194

195195
foreach ($entities as $entity) {
196196
/** @var Model $entity */
197-
$this->authorize('update', $entity);
197+
$this->authorize('update', [$entity, $parentEntity]);
198198

199199
$resource = $request->input("resources.{$entity->{$this->keyName()}}");
200200

@@ -393,7 +393,7 @@ protected function batchDestroyWithTransaction(Request $request, $parentKey)
393393

394394
foreach ($entities as $entity) {
395395
/** @var Model $entity */
396-
$this->authorize($forceDeletes ? 'forceDelete' : 'delete', $entity);
396+
$this->authorize($forceDeletes ? 'forceDelete' : 'delete', [$entity, $parentEntity]);
397397

398398
$this->beforeDestroy($request, $parentEntity, $entity);
399399

@@ -560,7 +560,7 @@ protected function batchRestoreWithTransaction(Request $request, $parentKey)
560560

561561
foreach ($entities as $entity) {
562562
/** @var Model $entity */
563-
$this->authorize('restore', $entity);
563+
$this->authorize('restore', [$entity, $parentEntity]);
564564

565565
$this->beforeRestore($request, $parentEntity, $entity);
566566

src/Concerns/HandlesRelationStandardOperations.php

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ trait HandlesRelationStandardOperations
3232
*/
3333
public function index(Request $request, $parentKey)
3434
{
35-
$this->authorize('viewAny', $this->resolveResourceModelClass());
36-
3735
$requestedRelations = $this->relationsResolver->requestedRelations($request);
3836

3937
$parentQuery = $this->buildIndexParentFetchQuery($request, $parentKey);
4038
$parentEntity = $this->runIndexParentFetchQuery($request, $parentQuery, $parentKey);
4139

40+
$this->authorize('viewAny', [$this->resolveResourceModelClass(), $parentEntity]);
41+
4242
$beforeHookResult = $this->beforeIndex($request, $parentEntity);
4343
if ($this->hookResponds($beforeHookResult)) {
4444
return $beforeHookResult;
@@ -251,13 +251,13 @@ public function store(Request $request, $parentKey)
251251
*/
252252
protected function storeWithTransaction(Request $request, $parentKey)
253253
{
254-
$resourceModelClass = $this->resolveResourceModelClass();
255-
256-
$this->authorize('create', $resourceModelClass);
257-
258254
$parentQuery = $this->buildStoreParentFetchQuery($request, $parentKey);
259255
$parentEntity = $this->runStoreParentFetchQuery($request, $parentQuery, $parentKey);
260256

257+
$resourceModelClass = $this->resolveResourceModelClass();
258+
259+
$this->authorize('create', [$resourceModelClass, $parentEntity]);
260+
261261
/** @var Model $entity */
262262
$entity = new $resourceModelClass;
263263

@@ -434,7 +434,7 @@ public function show(Request $request, $parentKey, $relatedKey = null)
434434
$query = $this->buildShowFetchQuery($request, $parentEntity, $requestedRelations);
435435
$entity = $this->runShowFetchQuery($request, $query, $parentEntity, $relatedKey);
436436

437-
$this->authorize('view', $entity);
437+
$this->authorize('view', [$entity, $parentEntity]);
438438

439439
$entity = $this->cleanupEntity($entity);
440440

@@ -613,7 +613,7 @@ protected function updateWithTransaction(Request $request, $parentKey, $relatedK
613613
$query = $this->buildUpdateFetchQuery($request, $parentEntity, $requestedRelations);
614614
$entity = $this->runUpdateFetchQuery($request, $query, $parentEntity, $relatedKey);
615615

616-
$this->authorize('update', $entity);
616+
$this->authorize('update', [$entity, $parentEntity]);
617617

618618
$beforeHookResult = $this->beforeUpdate($request, $parentEntity, $entity);
619619
if ($this->hookResponds($beforeHookResult)) {
@@ -811,7 +811,7 @@ protected function destroyWithTransaction(Request $request, $parentKey, $related
811811
abort(404);
812812
}
813813

814-
$this->authorize($forceDeletes ? 'forceDelete' : 'delete', $entity);
814+
$this->authorize($forceDeletes ? 'forceDelete' : 'delete', [$entity, $parentEntity]);
815815

816816
$beforeHookResult = $this->beforeDestroy($request, $parentEntity, $entity);
817817
if ($this->hookResponds($beforeHookResult)) {
@@ -994,7 +994,7 @@ protected function restoreWithTransaction(Request $request, $parentKey, $related
994994
$query = $this->buildRestoreFetchQuery($request, $parentEntity, $requestedRelations);
995995
$entity = $this->runRestoreFetchQuery($request, $query, $parentEntity, $relatedKey);
996996

997-
$this->authorize('restore', $entity);
997+
$this->authorize('restore', [$entity, $parentEntity]);
998998

999999
$beforeHookResult = $this->beforeRestore($request, $parentEntity, $entity);
10001000
if ($this->hookResponds($beforeHookResult)) {

0 commit comments

Comments
 (0)