Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
iamgergo committed Jan 6, 2024
1 parent 9202366 commit 9741c82
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 15 deletions.
19 changes: 8 additions & 11 deletions routes/web.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,17 @@

use Cone\Root\Http\Controllers\DashboardController;
use Cone\Root\Http\Controllers\ResourceController;
use Cone\Root\Http\Middleware\Authorize;
use Illuminate\Support\Facades\Route;

// Dashboard
Route::get('/', DashboardController::class)->name('dashboard');

// Resource
Route::middleware([Authorize::class.':_resource'])->group(static function (): void {
Route::get('/{resource}', [ResourceController::class, 'index'])->name('resource.index');
Route::get('/{resource}/create', [ResourceController::class, 'create'])->name('resource.create');
Route::post('/{resource}', [ResourceController::class, 'store'])->name('resource.store');
Route::get('/{resource}/{resourceModel}', [ResourceController::class, 'show'])->name('resource.show');
Route::get('/{resource}/{resourceModel}/edit', [ResourceController::class, 'edit'])->name('resource.edit');
Route::patch('/{resource}/{resourceModel}', [ResourceController::class, 'update'])->name('resource.update');
Route::delete('/{resource}/{resourceModel}', [ResourceController::class, 'destroy'])->name('resource.delete');
Route::post('/{resource}/{resourceModel}/restore', [ResourceController::class, 'restore'])->name('resource.restore');
});
Route::get('/{resource}', [ResourceController::class, 'index'])->name('resource.index');
Route::get('/{resource}/create', [ResourceController::class, 'create'])->name('resource.create');
Route::post('/{resource}', [ResourceController::class, 'store'])->name('resource.store');
Route::get('/{resource}/{resourceModel}', [ResourceController::class, 'show'])->name('resource.show');
Route::get('/{resource}/{resourceModel}/edit', [ResourceController::class, 'edit'])->name('resource.edit');
Route::patch('/{resource}/{resourceModel}', [ResourceController::class, 'update'])->name('resource.update');
Route::delete('/{resource}/{resourceModel}', [ResourceController::class, 'destroy'])->name('resource.delete');
Route::post('/{resource}/{resourceModel}/restore', [ResourceController::class, 'restore'])->name('resource.restore');
2 changes: 2 additions & 0 deletions src/Fields/Relation.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
use Cone\Root\Interfaces\Form;
use Cone\Root\Root;
use Cone\Root\Traits\AsForm;
use Cone\Root\Traits\MapsAbilities;
use Cone\Root\Traits\RegistersRoutes;
use Cone\Root\Traits\ResolvesActions;
use Cone\Root\Traits\ResolvesFields;
Expand All @@ -29,6 +30,7 @@
abstract class Relation extends Field implements Form
{
use AsForm;
use MapsAbilities;
use RegistersRoutes {
RegistersRoutes::registerRoutes as __registerRoutes;
}
Expand Down
4 changes: 0 additions & 4 deletions src/Http/Controllers/RelationController.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,6 @@ public function index(Request $request, Model $model): Response
{
$field = $request->route('field');

// if ($field->getPolicy()) {
// $this->authorize('viewAny', $field->getModel());
// }

$data = $field->toIndex($request, $model);

return ResponseFactory::view(
Expand Down
6 changes: 6 additions & 0 deletions src/Resources/Resource.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use Cone\Root\Root;
use Cone\Root\Traits\AsForm;
use Cone\Root\Traits\Authorizable;
use Cone\Root\Traits\MapsAbilities;
use Cone\Root\Traits\RegistersRoutes;
use Cone\Root\Traits\ResolvesActions;
use Cone\Root\Traits\ResolvesFilters;
Expand All @@ -38,6 +39,7 @@ abstract class Resource implements Arrayable, Form
{
use AsForm;
use Authorizable;
use MapsAbilities;
use RegistersRoutes {
RegistersRoutes::registerRoutes as __registerRoutes;
RegistersRoutes::routeMatched as __routeMatched;
Expand Down Expand Up @@ -415,6 +417,10 @@ public function routeMatched(RouteMatched $event): void
{
$event->route->defaults('resource', $this->getKey());

$event->route->getController()->middleware(
$this->getRouteMiddleware()
);

$this->__routeMatched($event);
}

Expand Down
40 changes: 40 additions & 0 deletions src/Traits/MapsAbilities.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php

Check warning on line 1 in src/Traits/MapsAbilities.php

View workflow job for this annotation

GitHub Actions / 4️⃣ Coding Standards

Found violation(s) of type: phpdoc_indent

namespace Cone\Root\Traits;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate;

trait MapsAbilities
{
/**
* Map the resource abilities.
*/
public function mapAbilities(): array
{
return [
'viewAny' => function (Request $request): bool {
return is_null($this->getPolicy()) || Gate::allows('viewAny', $this->getModel());
},
'create' => function (Request $request): bool {
return is_null($this->getPolicy()) || Gate::allows('create', $this->getModel());
},
'view' => function (Request $request, Model $model): bool {
return is_null($this->getPolicy()) || Gate::allows('view', $model);
},
'update' => function (Request $request, Model $model): bool {
return is_null($this->getPolicy()) || Gate::allows('update', $model);
},
'delete' => function (Request $request, Model $model): bool {
return is_null($this->getPolicy()) || Gate::allows('delete', $model);
},
'forceDelete' => function (Request $request, Model $model): bool {
return is_null($this->getPolicy()) || Gate::allows('delete', $model);
},
'restore' => function (Request $request, Model $model): bool {
return is_null($this->getPolicy()) || Gate::allows('delete', $model);
},
];
}
}

0 comments on commit 9741c82

Please sign in to comment.