Skip to content

Commit 916c868

Browse files
phpsacraigAtCD
andauthored
override fieldsets with a custom fieldset parameter. (#77)
Co-authored-by: Craig Smith <[email protected]>
1 parent 2058b00 commit 916c868

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

src/Http/Api/Contracts/HasResources.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ protected function getDefaultFields(): array
5151
{
5252
$resource = $this->getResourceSingle();
5353

54-
return (method_exists($resource, 'getDefaultFields')) ? ($resource)::getDefaultFields() : ['*'];
54+
return (method_exists($resource, 'getDefaultFields')) ? ($resource)::getDefaultFields($this->request) : ['*'];
5555
}
5656

5757
/**
@@ -63,7 +63,7 @@ protected function getAllowedScopes(): array
6363
{
6464
$resource = $this->getResourceSingle();
6565

66-
$scopes = collect((method_exists($resource, 'getAllowedScopes')) ? ($resource)::getAllowedScopes() : []);
66+
$scopes = collect((method_exists($resource, 'getAllowedScopes')) ? ($resource)::getAllowedScopes($this->request) : []);
6767

6868
return $scopes->map(function ($scope) {
6969
return strpos($scope, 'scope') === 0 ? substr($scope, 5) : $scope;

src/Http/Resources/ApiResource.php

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22

33
namespace Phpsa\LaravelApiController\Http\Resources;
44

5+
use Phpsa\LaravelApiController\Helpers;
56
use Illuminate\Http\Resources\Json\JsonResource;
6-
use Phpsa\LaravelApiController\Http\Resources\Contracts\AllowableFields;
77
use Phpsa\LaravelApiController\Http\Resources\Contracts\CaseFormat;
8+
use Phpsa\LaravelApiController\Http\Resources\Contracts\AllowableFields;
89

910
class ApiResource extends JsonResource
1011
{

src/Http/Resources/Contracts/AllowableFields.php

+12-4
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ protected function mapFieldData($request, $fields)
9595
*/
9696
protected function mapFields($request): array
9797
{
98-
$map = $this->getDefaultFields();
98+
$map = self::getDefaultFields($request);
9999
$defaultFields = $map === ['*'] ? array_keys($this->getResourceFields()) : $map;
100100
$allowedFields = static::$allowedFields ?? [];
101101
$fields = Helpers::filterFieldsFromRequest($request, $defaultFields, $allowedFields);
@@ -124,13 +124,17 @@ protected function getResourceFields(): array
124124
return is_array($this->resource) ? $this->resource : $this->resource->getAttributes();
125125
}
126126

127-
/**
127+
/**
128128
* Return default fields for this collection.
129129
*
130130
* @return array
131131
*/
132-
public static function getDefaultFields(): array
132+
public static function getDefaultFields($request): array
133133
{
134+
if (method_exists(get_called_class(), 'defaultFields')) {
135+
$c = get_called_class();
136+
return $c::defaultFields($request);
137+
}
134138
return static::$defaultFields ?? ['*'];
135139
}
136140

@@ -140,8 +144,12 @@ public static function getDefaultFields(): array
140144
* @return array
141145
* @author Sam Sehnert <[email protected]>
142146
*/
143-
public static function getAllowedScopes(): array
147+
public static function getAllowedScopes($request): array
144148
{
149+
if (method_exists(get_called_class(), 'defaultScopes')) {
150+
$c = get_called_class();
151+
return $c::defaultScopes($request);
152+
}
145153
return static::$allowedScopes ?? [];
146154
}
147155
}

0 commit comments

Comments
 (0)