Skip to content

Commit 88b1458

Browse files
authored
🚑️ rules exploit (#172)
1 parent 336d79b commit 88b1458

File tree

59 files changed

+871
-2089
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+871
-2089
lines changed

src/Concerns/Resource/Relationable.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ trait Relationable
1212
/**
1313
* Get a relation by name.
1414
*
15-
* @param string $name
16-
*
1715
* @return Relation|null
1816
*/
19-
public function relation($name)
17+
public function relation(string $name)
2018
{
2119
$name = relation_without_pivot($name);
2220

src/Http/Requests/MutateRequest.php

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Lomkit\Rest\Http\Requests;
44

5-
use Lomkit\Rest\Rules\MutateRules;
5+
use Lomkit\Rest\Rules\Mutate\Mutate;
66

77
class MutateRequest extends RestRequest
88
{
@@ -16,14 +16,11 @@ class MutateRequest extends RestRequest
1616
*/
1717
public function rules()
1818
{
19+
$resource = $this->route()->controller::newResource();
20+
1921
return [
20-
'mutate' => ['required'],
21-
'mutate.*' => new MutateRules(
22-
$this->route()->controller::newResource(),
23-
$this,
24-
null,
25-
true
26-
),
22+
'mutate' => 'required',
23+
'mutate.*' => (new Mutate())->setResource($resource),
2724
];
2825
}
2926
}

src/Http/Requests/OperateRequest.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
use Illuminate\Validation\Rule;
66
use Lomkit\Rest\Actions\Action;
77
use Lomkit\Rest\Http\Resource;
8-
use Lomkit\Rest\Rules\ActionField;
9-
use Lomkit\Rest\Rules\SearchRules;
8+
use Lomkit\Rest\Rules\Operate\OperateField;
9+
use Lomkit\Rest\Rules\Search\Search;
1010
use Symfony\Component\HttpKernel\Exception\HttpException;
1111

1212
class OperateRequest extends RestRequest
@@ -51,7 +51,7 @@ public function operateRules()
5151
],
5252
] : [],
5353
!$operatedAction->isStandalone() ? [
54-
'search' => [new SearchRules($this->resource, $this)],
54+
'search' => [(new Search())->setResource($this->resource)],
5555
] : [],
5656
[
5757
'fields.*.name' => [
@@ -62,8 +62,7 @@ public function operateRules()
6262
'array',
6363
],
6464
'fields.*' => [
65-
ActionField::make()
66-
->action($operatedAction),
65+
(new OperateField())->setAction($operatedAction),
6766
],
6867
]
6968
);

src/Http/Requests/SearchRequest.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace Lomkit\Rest\Http\Requests;
44

5-
use Lomkit\Rest\Rules\SearchRules;
5+
use Lomkit\Rest\Rules\Search\Search;
66

77
class SearchRequest extends RestRequest
88
{
@@ -13,12 +13,10 @@ class SearchRequest extends RestRequest
1313
*/
1414
public function rules()
1515
{
16+
$resource = $this->route()->controller::newResource();
17+
1618
return [
17-
'search' => new SearchRules(
18-
$this->route()->controller::newResource(),
19-
$this,
20-
true
21-
),
19+
'search' => (new Search())->setResource($resource),
2220
];
2321
}
2422
}

src/Relations/BelongsToMany.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Lomkit\Rest\Contracts\RelationResource;
99
use Lomkit\Rest\Http\Resource;
1010
use Lomkit\Rest\Relations\Traits\HasMultipleResults;
11-
use Lomkit\Rest\Rules\ArrayWith;
11+
use Lomkit\Rest\Rules\ArrayWithKey;
1212

1313
class BelongsToMany extends Relation implements RelationResource
1414
{
@@ -30,7 +30,7 @@ public function rules(Resource $resource, string $prefix)
3030
[
3131
$prefix.'.*.pivot' => [
3232
'prohibited_if:'.$prefix.'.*.operation,detach',
33-
new ArrayWith($this->getPivotFields()),
33+
new ArrayWithKey($this->getPivotFields()),
3434
],
3535
]
3636
);

src/Relations/MorphToMany.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Lomkit\Rest\Contracts\RelationResource;
99
use Lomkit\Rest\Http\Resource;
1010
use Lomkit\Rest\Relations\Traits\HasMultipleResults;
11-
use Lomkit\Rest\Rules\ArrayWith;
11+
use Lomkit\Rest\Rules\ArrayWithKey;
1212

1313
class MorphToMany extends MorphRelation implements RelationResource
1414
{
@@ -30,7 +30,7 @@ public function rules(Resource $resource, string $prefix)
3030
[
3131
$prefix.'.*.pivot' => [
3232
'prohibited_if:'.$prefix.'.*.operation,detach',
33-
new ArrayWith($this->getPivotFields()),
33+
new ArrayWithKey($this->getPivotFields()),
3434
],
3535
]
3636
);

src/Relations/MorphedByMany.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
use Lomkit\Rest\Contracts\RelationResource;
99
use Lomkit\Rest\Http\Resource;
1010
use Lomkit\Rest\Relations\Traits\HasMultipleResults;
11-
use Lomkit\Rest\Rules\ArrayWith;
11+
use Lomkit\Rest\Rules\ArrayWithKey;
1212

1313
class MorphedByMany extends MorphRelation implements RelationResource
1414
{
@@ -30,7 +30,7 @@ public function rules(Resource $resource, string $prefix)
3030
[
3131
$prefix.'.*.pivot' => [
3232
'prohibited_if:'.$prefix.'.*.operation,detach',
33-
new ArrayWith($this->getPivotFields()),
33+
new ArrayWithKey($this->getPivotFields()),
3434
],
3535
]
3636
);

src/Relations/Relation.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,8 @@ class Relation implements \JsonSerializable
2222

2323
/**
2424
* The displayable name of the relation.
25-
*
26-
* @var string
2725
*/
28-
public $name;
26+
public string $name;
2927

3028
protected Resource $fromResource;
3129

@@ -42,7 +40,7 @@ public function __construct($relation, $type)
4240
*/
4341
public function name()
4442
{
45-
return $this->name ?: (new \ReflectionClass($this))->getShortName();
43+
return $this->name ?? (new \ReflectionClass($this))->getShortName();
4644
}
4745

4846
/**

src/Rules/ActionField.php

Lines changed: 0 additions & 151 deletions
This file was deleted.

0 commit comments

Comments
 (0)