Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1be3e40

Browse files
Added Policy-Driven Authorization
1 parent d75e9db commit 1be3e40

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)

AltStyle によって変換されたページ (->オリジナル) /