Skip to content

Commit 569fd17

Browse files
authored
Fix Gate unable to resolve correct Policy class (#23)
Signed-off-by: Mior Muhammad Zaki <[email protected]>
1 parent 2b5c33f commit 569fd17

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/DevTool.php

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

33
namespace Laravel\Nova\DevTool;
44

5+
use Illuminate\Contracts\Auth\Access\Gate as GateContract;
56
use Illuminate\Support\Str;
67
use Laravel\Nova\Actions\ActionResource;
78
use Laravel\Nova\Nova;
@@ -19,21 +20,29 @@ public static function resourcesIn(string $directory): void
1920
{
2021
$namespace = Workbench::detectNamespace('app');
2122

23+
/** @var array<int, class-string<\Laravel\Nova\Resource>> $resources */
2224
$resources = [];
2325

26+
$gate = app(GateContract::class);
27+
2428
foreach ((new Finder)->in($directory)->files() as $resource) {
25-
$resource = $namespace.str_replace(
29+
/** @var class-string<\Laravel\Nova\Resource> $resourceClass */
30+
$resourceClass = $namespace.str_replace(
2631
['/', '.php'],
2732
['\\', ''],
2833
Str::after($resource->getPathname(), Workbench::path('app').DIRECTORY_SEPARATOR)
2934
);
3035

3136
if (
32-
is_subclass_of($resource, Resource::class) &&
33-
! (new ReflectionClass($resource))->isAbstract() &&
34-
! is_subclass_of($resource, ActionResource::class)
37+
is_subclass_of($resourceClass, Resource::class) &&
38+
! (new ReflectionClass($resourceClass))->isAbstract() &&
39+
! is_subclass_of($resourceClass, ActionResource::class)
3540
) {
36-
$resources[] = $resource;
41+
$resources[] = $resourceClass;
42+
}
43+
44+
if (property_exists($resourceClass, 'policy') && ! is_null($resourceClass::$policy)) {
45+
$gate->policy($resourceClass, $resourceClass::$policy);
3746
}
3847
}
3948

0 commit comments

Comments
 (0)