22
33namespace LaravelDomainOriented \Controller ;
44
5+ use Illuminate \Foundation \Auth \Access \AuthorizesRequests ;
6+ use Illuminate \Foundation \Bus \DispatchesJobs ;
57use Illuminate \Http \JsonResponse ;
68use Illuminate \Http \Request ;
79use Illuminate \Routing \Controller as BaseController ;
1113
1214class Controller extends BaseController
1315{
16+ use AuthorizesRequests, DispatchesJobs;
17+
1418 protected SearchService $ searchService ;
1519
1620 protected PersistenceService $ persistenceService ;
@@ -26,12 +30,16 @@ public function response(array $data = [], $status = 200): JsonResponse
2630
2731 public function index (Request $ request )
2832 {
33+ $ this ->authorize ('index ' , $ this ->searchService ->getModel ());
34+
2935 $ data = $ this ->searchService ->all ($ request );
3036 return $ this ->resource ::collection ($ data );
3137 }
3238
3339 public function show (Request $ request , int $ id )
3440 {
41+ $ this ->authorize ('show ' , $ this ->searchService ->getModel ());
42+
3543 $ request = $ request ->merge (['id ' => $ id ]);
3644 $ validatedData = $ this ->validateService ->handle ($ request ->all (), ValidateService::SHOW );
3745
@@ -41,13 +49,17 @@ public function show(Request $request, int $id)
4149
4250 public function store (Request $ request ): JsonResponse
4351 {
52+ $ this ->authorize ('store ' , $ this ->searchService ->getModel ());
53+
4454 $ validatedData = $ this ->validateService ->handle ($ request ->all (), ValidateService::STORE );
4555 $ id = $ this ->persistenceService ->store ($ validatedData );
4656 return $ this ->response (['id ' => $ id ]);
4757 }
4858
4959 public function update (Request $ request , $ id ): JsonResponse
5060 {
61+ $ this ->authorize ('update ' , $ this ->searchService ->getModel ());
62+
5163 $ request = $ request ->merge (['id ' => $ id ]);
5264 $ validatedData = $ this ->validateService ->handle ($ request ->all (), ValidateService::UPDATE );
5365
@@ -57,6 +69,8 @@ public function update(Request $request, $id): JsonResponse
5769
5870 public function destroy (Request $ request , int $ id ): JsonResponse
5971 {
72+ $ this ->authorize ('destroy ' , $ this ->searchService ->getModel ());
73+
6074 $ request = $ request ->merge (['id ' => $ id ]);
6175 $ validatedData = $ this ->validateService ->handle ($ request ->all (), ValidateService::DESTROY );
6276
0 commit comments