Skip to content

Commit 20b299b

Browse files
authored
Merge pull request #60 from balajidharma/2.x-Changes
Added Policy-Driven Authorization
2 parents 83c12b3 + 1be3e40 commit 20b299b

File tree

11 files changed

+143
-148
lines changed

11 files changed

+143
-148
lines changed

app/Http/Controllers/Admin/CategoryController.php

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,25 @@
33
namespace App\Http\Controllers\Admin;
44

55
use App\Http\Controllers\Controller;
6-
use BalajiDharma\LaravelAdminCore\Requests\StoreCategoryRequest;
7-
use BalajiDharma\LaravelAdminCore\Requests\UpdateCategoryRequest;
6+
use BalajiDharma\LaravelAdminCore\Actions\Category\CategoryCreateAction;
7+
use BalajiDharma\LaravelAdminCore\Actions\Category\CategoryUpdateAction;
8+
use BalajiDharma\LaravelAdminCore\Data\Category\CategoryCreateData;
9+
use BalajiDharma\LaravelAdminCore\Data\Category\CategoryUpdateData;
810
use BalajiDharma\LaravelCategory\Models\Category;
911
use BalajiDharma\LaravelCategory\Models\CategoryType;
1012
use Illuminate\Support\Facades\Auth;
1113
use Inertia\Inertia;
1214

1315
class CategoryController extends Controller
1416
{
15-
public function __construct()
16-
{
17-
$this->middleware('can:category list', ['only' => ['index', 'show']]);
18-
$this->middleware('can:category create', ['only' => ['create', 'store']]);
19-
$this->middleware('can:category edit', ['only' => ['edit', 'update']]);
20-
$this->middleware('can:category delete', ['only' => ['destroy']]);
21-
}
22-
2317
/**
2418
* Display a listing of the resource.
2519
*
2620
* @return \Inertia\Response
2721
*/
2822
public function index(CategoryType $type)
2923
{
24+
$this->authorize('adminViewAny', Category::class);
3025
$items = (new Category)->toTree($type->id, true);
3126

3227
return Inertia::render('Admin/Category/Item/Index', [
@@ -47,6 +42,7 @@ public function index(CategoryType $type)
4742
*/
4843
public function create(CategoryType $type)
4944
{
45+
$this->authorize('adminCreate', Category::class);
5046
$itemOptions = Category::selectOptions($type->id, null, true);
5147

5248
return Inertia::render('Admin/Category/Item/Create', [
@@ -60,13 +56,10 @@ public function create(CategoryType $type)
6056
*
6157
* @return \Illuminate\Http\RedirectResponse
6258
*/
63-
public function store(StoreCategoryRequest $request, CategoryType $type)
59+
public function store(CategoryCreateData $data, CategoryType $type, CategoryCreateAction $categoryCreateAction)
6460
{
65-
if (! $request->has('enabled')) {
66-
$request['enabled'] = false;
67-
}
68-
69-
$type->categories()->create($request->all());
61+
$this->authorize('adminCreate', Category::class);
62+
$categoryCreateAction->handle($data, $type);
7063

7164
return redirect()->route('admin.category.type.item.index', $type->id)
7265
->with('message', 'Category created successfully.');
@@ -79,6 +72,7 @@ public function store(StoreCategoryRequest $request, CategoryType $type)
7972
*/
8073
public function edit(CategoryType $type, Category $item)
8174
{
75+
$this->authorize('adminUpdate', $item);
8276
$itemOptions = Category::selectOptions($type->id, $item->parent_id ?? $item->id);
8377

8478
return Inertia::render('Admin/Category/Item/Edit', [
@@ -93,13 +87,10 @@ public function edit(CategoryType $type, Category $item)
9387
*
9488
* @return \Illuminate\Http\RedirectResponse
9589
*/
96-
public function update(UpdateCategoryRequest $request, CategoryType $type, Category $item)
90+
public function update(CategoryUpdateData $data, CategoryType $type, Category $item, CategoryUpdateAction $categoryUpdateAction)
9791
{
98-
if (! $request->has('enabled')) {
99-
$request['enabled'] = false;
100-
}
101-
102-
$item->update($request->all());
92+
$this->authorize('adminUpdate', $item);
93+
$categoryUpdateAction->handle($data, $item);
10394

10495
return redirect()->route('admin.category.type.item.index', $type->id)
10596
->with('message', 'Category updated successfully.');
@@ -113,6 +104,7 @@ public function update(UpdateCategoryRequest $request, CategoryType $type, Categ
113104
*/
114105
public function destroy(CategoryType $type, Category $item)
115106
{
107+
$this->authorize('adminDelete', $item);
116108
$item->delete();
117109

118110
return redirect()->route('admin.category.type.item.index', $type->id)

app/Http/Controllers/Admin/CategoryTypeController.php

Lines changed: 13 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,24 @@
33
namespace App\Http\Controllers\Admin;
44

55
use App\Http\Controllers\Controller;
6-
use BalajiDharma\LaravelAdminCore\Requests\StoreCategoryTypeRequest;
7-
use BalajiDharma\LaravelAdminCore\Requests\UpdateCategoryTypeRequest;
6+
use BalajiDharma\LaravelAdminCore\Actions\CategoryType\CategoryTypeCreateAction;
7+
use BalajiDharma\LaravelAdminCore\Actions\CategoryType\CategoryTypeUpdateAction;
8+
use BalajiDharma\LaravelAdminCore\Data\CategoryType\CategoryTypeCreateData;
9+
use BalajiDharma\LaravelAdminCore\Data\CategoryType\CategoryTypeUpdateData;
810
use BalajiDharma\LaravelCategory\Models\CategoryType;
911
use Illuminate\Support\Facades\Auth;
1012
use Inertia\Inertia;
1113

1214
class CategoryTypeController extends Controller
1315
{
14-
public function __construct()
15-
{
16-
$this->middleware('can:category.type list', ['only' => ['index']]);
17-
$this->middleware('can:category.type create', ['only' => ['create', 'store']]);
18-
$this->middleware('can:category.type edit', ['only' => ['edit', 'update']]);
19-
$this->middleware('can:category.type delete', ['only' => ['destroy']]);
20-
}
21-
2216
/**
2317
* Display a listing of the resource.
2418
*
2519
* @return \Inertia\Response
2620
*/
2721
public function index()
2822
{
23+
$this->authorize('adminViewAny', CategoryType::class);
2924
$categoryTypes = (new CategoryType)->newQuery();
3025

3126
if (request()->has('search')) {
@@ -66,6 +61,7 @@ public function index()
6661
*/
6762
public function create()
6863
{
64+
$this->authorize('adminCreate', CategoryType::class);
6965
return Inertia::render('Admin/Category/Type/Create');
7066
}
7167

@@ -74,18 +70,10 @@ public function create()
7470
*
7571
* @return \Illuminate\Http\RedirectResponse
7672
*/
77-
public function store(StoreCategoryTypeRequest $request)
73+
public function store(CategoryTypeCreateData $data, CategoryTypeCreateAction $categoryTypeCreateAction)
7874
{
79-
if (! $request->has('is_flat')) {
80-
$request['is_flat'] = false;
81-
}
82-
83-
CategoryType::create([
84-
'name' => $request->name,
85-
'machine_name' => $request->machine_name,
86-
'description' => $request->description,
87-
'is_flat' => $request->is_flat,
88-
]);
75+
$this->authorize('adminCreate', CategoryType::class);
76+
$categoryTypeCreateAction->handle($data);
8977

9078
return redirect()->route('admin.category.type.index')
9179
->with('message', 'Category type created successfully.');
@@ -99,6 +87,7 @@ public function store(StoreCategoryTypeRequest $request)
9987
*/
10088
public function edit(CategoryType $type)
10189
{
90+
$this->authorize('adminUpdate', $type);
10291
return Inertia::render('Admin/Category/Type/Edit', [
10392
'categoryType' => $type,
10493
]);
@@ -110,13 +99,10 @@ public function edit(CategoryType $type)
11099
* @param \BalajiDharma\LaravelCategory\Models\CategoryType $categoryType
111100
* @return \Illuminate\Http\RedirectResponse
112101
*/
113-
public function update(UpdateCategoryTypeRequest $request, CategoryType $type)
102+
public function update(CategoryTypeUpdateData $data, CategoryType $type, CategoryTypeUpdateAction $categoryTypeUpdateAction)
114103
{
115-
if (! $request->has('is_flat')) {
116-
$request['is_flat'] = false;
117-
}
118-
119-
$type->update($request->all());
104+
$this->authorize('adminUpdate', $type);
105+
$categoryTypeUpdateAction->handle($data, $type);
120106

121107
return redirect()->route('admin.category.type.index')
122108
->with('message', 'Category type updated successfully.');

app/Http/Controllers/Admin/MediaController.php

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,14 @@
1414

1515
class MediaController extends Controller
1616
{
17-
public function __construct()
18-
{
19-
$this->middleware('can:media list', ['only' => ['index']]);
20-
$this->middleware('can:media create', ['only' => ['create', 'store']]);
21-
$this->middleware('can:media edit', ['only' => ['edit', 'update']]);
22-
$this->middleware('can:media delete', ['only' => ['destroy']]);
23-
}
24-
2517
/**
2618
* Display a listing of the resource.
2719
*
2820
* @return \Inertia\Response
2921
*/
3022
public function index()
3123
{
24+
$this->authorize('adminViewAny', Media::class);
3225
$mediaItems = (new Media)->newQuery();
3326
$mediaItems->whereIsOriginal();
3427
if (request()->has('search')) {
@@ -69,6 +62,7 @@ public function index()
6962
*/
7063
public function create()
7164
{
65+
$this->authorize('adminCreate', Media::class);
7266
$typeOptions = media_type_as_options();
7367
return Inertia::render('Admin/Media/Create', [
7468
'typeOptions' => $typeOptions,
@@ -82,6 +76,7 @@ public function create()
8276
*/
8377
public function store(MediaCreateData $data, MediaCreateAction $mediaCreateAction)
8478
{
79+
$this->authorize('adminCreate', Media::class);
8580
$mediaCreateAction->handle($data);
8681

8782
return redirect()->route('admin.media.index')
@@ -96,6 +91,7 @@ public function store(MediaCreateData $data, MediaCreateAction $mediaCreateActio
9691
public function show($id)
9792
{
9893
$media = Media::findOrFail($id);
94+
$this->authorize('adminView', $media);
9995

10096
return Inertia::render('Admin/Media/Show', [
10197
'media' => MediaData::from($media),
@@ -110,6 +106,7 @@ public function show($id)
110106
public function edit($id)
111107
{
112108
$media = Media::findOrFail($id);
109+
$this->authorize('adminUpdate', $media);
113110
$typeOptions = media_type_as_options();
114111

115112
return Inertia::render('Admin/Media/Edit', [
@@ -127,6 +124,7 @@ public function edit($id)
127124
public function update(MediaUpdateData $mediaUpdateData, $id, MediaUpdateAction $mediaUpdateAction)
128125
{
129126
$media = Media::findOrFail($id);
127+
$this->authorize('adminUpdate', $media);
130128
$mediaUpdateAction->handle($mediaUpdateData, $media);
131129

132130
return redirect()->route('admin.media.index')
@@ -141,6 +139,7 @@ public function update(MediaUpdateData $mediaUpdateData, $id, MediaUpdateAction
141139
public function destroy($id)
142140
{
143141
$media = Media::findOrFail($id);
142+
$this->authorize('adminDelete', $media);
144143
$media->getAllVariantsAndSelf()->each(function (Media $variant) {
145144
$variant->delete();
146145
});

app/Http/Controllers/Admin/MenuController.php

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,24 @@
33
namespace App\Http\Controllers\Admin;
44

55
use App\Http\Controllers\Controller;
6-
use BalajiDharma\LaravelAdminCore\Requests\StoreMenuRequest;
7-
use BalajiDharma\LaravelAdminCore\Requests\UpdateMenuRequest;
6+
use BalajiDharma\LaravelAdminCore\Actions\Menu\MenuCreateAction;
7+
use BalajiDharma\LaravelAdminCore\Actions\Menu\MenuUpdateAction;
8+
use BalajiDharma\LaravelAdminCore\Data\Menu\MenuCreateData;
9+
use BalajiDharma\LaravelAdminCore\Data\Menu\MenuUpdateData;
810
use BalajiDharma\LaravelMenu\Models\Menu;
911
use Illuminate\Support\Facades\Auth;
1012
use Inertia\Inertia;
1113

1214
class MenuController extends Controller
1315
{
14-
public function __construct()
15-
{
16-
$this->middleware('can:menu list', ['only' => ['index']]);
17-
$this->middleware('can:menu create', ['only' => ['create', 'store']]);
18-
$this->middleware('can:menu edit', ['only' => ['edit', 'update']]);
19-
$this->middleware('can:menu delete', ['only' => ['destroy']]);
20-
}
21-
2216
/**
2317
* Display a listing of the resource.
2418
*
2519
* @return \Inertia\Response
2620
*/
2721
public function index()
2822
{
23+
$this->authorize('adminViewAny', Menu::class);
2924
$menus = (new Menu)->newQuery();
3025

3126
if (request()->has('search')) {
@@ -67,6 +62,7 @@ public function index()
6762
*/
6863
public function create()
6964
{
65+
$this->authorize('adminCreate', Menu::class);
7066
return Inertia::render('Admin/Menu/Create');
7167
}
7268

@@ -75,13 +71,10 @@ public function create()
7571
*
7672
* @return \Illuminate\Http\RedirectResponse
7773
*/
78-
public function store(StoreMenuRequest $request)
74+
public function store(MenuCreateData $data, MenuCreateAction $menuCreateAction)
7975
{
80-
Menu::create([
81-
'name' => $request->name,
82-
'machine_name' => $request->machine_name,
83-
'description' => $request->description,
84-
]);
76+
$this->authorize('adminCreate', Menu::class);
77+
$menuCreateAction->handle($data);
8578

8679
return redirect()->route('admin.menu.index')
8780
->with('message', 'Menu created successfully.');
@@ -94,6 +87,7 @@ public function store(StoreMenuRequest $request)
9487
*/
9588
public function edit(Menu $menu)
9689
{
90+
$this->authorize('adminUpdate', $menu);
9791
return Inertia::render('Admin/Menu/Edit', [
9892
'menu' => $menu,
9993
]);
@@ -104,9 +98,10 @@ public function edit(Menu $menu)
10498
*
10599
* @return \Illuminate\Http\RedirectResponse
106100
*/
107-
public function update(UpdateMenuRequest $request, Menu $menu)
101+
public function update(MenuUpdateData $data, Menu $menu, MenuUpdateAction $menuUpdateAction)
108102
{
109-
$menu->update($request->all());
103+
$this->authorize('adminUpdate', $menu);
104+
$menuUpdateAction->handle($data, $menu);
110105

111106
return redirect()->route('admin.menu.index')
112107
->with('message', 'Menu updated successfully.');
@@ -119,6 +114,7 @@ public function update(UpdateMenuRequest $request, Menu $menu)
119114
*/
120115
public function destroy(Menu $menu)
121116
{
117+
$this->authorize('adminDelete', $menu);
122118
$menu->delete();
123119

124120
return redirect()->route('admin.menu.index')

0 commit comments

Comments
 (0)