From 3bd5c064c3615688e8515c921826f64e5bb9b84f Mon Sep 17 00:00:00 2001 From: James Collins Date: Fri, 10 Mar 2023 13:46:30 +1000 Subject: [PATCH] converted from filters to conductors --- app/Http/Controllers/Api/EventController.php | 62 +++++++++++------- app/Http/Controllers/Api/UserController.php | 69 +++++++++++--------- 2 files changed, 78 insertions(+), 53 deletions(-) diff --git a/app/Http/Controllers/Api/EventController.php b/app/Http/Controllers/Api/EventController.php index 816376a..fbc9364 100644 --- a/app/Http/Controllers/Api/EventController.php +++ b/app/Http/Controllers/Api/EventController.php @@ -3,9 +3,9 @@ namespace App\Http\Controllers\Api; use App\Enum\HttpResponseCodes; -use App\Filters\EventFilter; use App\Http\Requests\EventRequest; use App\Models\Event; +use App\Conductors\EventConductor; use Illuminate\Http\Request; class EventController extends ApiController @@ -22,56 +22,70 @@ class EventController extends ApiController /** * Display a listing of the resource. * - * @param EventFilter $filter The event filter. + * @param Request $request The request. * @return \Illuminate\Http\Response */ - public function index(EventFilter $filter) + public function index(Request $request) { + list($collection, $total) = EventConductor::request($request); + return $this->respondAsResource( - $filter->filter(), - ['total' => $filter->foundTotal()] + $collection, + ['total' => $total] ); } /** * Store a newly created resource in storage. * - * @param EventRequest $request The event store request. + * @param Request $request The request. * @return \Illuminate\Http\Response */ - public function store(EventRequest $request) + public function store(Request $request) { - $event = Event::create($request->all()); - return $this->respondAsResource( - (new EventFilter($request))->filter($event), - null, - HttpResponseCodes::HTTP_CREATED - ); + if(EventConductor::creatable()) { + $event = Event::create($request->all()); + return $this->respondAsResource( + EventConductor::model($request, $event), + null, + HttpResponseCodes::HTTP_CREATED + ); + } else { + return $this->respondForbidden(); + } } /** * Display the specified resource. * - * @param EventFilter $filter The event filter. + * @param Request $request The request. * @param \App\Models\Event $event The specified event. * @return \Illuminate\Http\Response */ - public function show(EventFilter $filter, Event $event) + public function show(Request $request, Event $event) { - return $this->respondAsResource($filter->filter($event)); + if(EventConductor::viewable($event)) { + return $this->respondAsResource(EventConductor::model($request, $event)); + } + + return $this->respondForbidden(); } /** * Update the specified resource in storage. * - * @param EventRequest $request The event update request. + * @param Request $request The request. * @param \App\Models\Event $event The specified event. * @return \Illuminate\Http\Response */ - public function update(EventRequest $request, Event $event) + public function update(Request $request, Event $event) { - $event->update($request->all()); - return $this->respondAsResource((new EventFilter($request))->filter($event)); + if(EventConductor::updatable($event)) { + $event->update($request->all()); + return $this->respondAsResource(EventConductor::model($request, $event)); + } else { + return $this->respondForbidden(); + } } /** @@ -82,7 +96,11 @@ class EventController extends ApiController */ public function destroy(Event $event) { - $event->delete(); - return $this->respondNoContent(); + if(EventConductor::destroyable($event)) { + $event->delete(); + return $this->respondNoContent(); + } else { + return $this->respondForbidden(); + } } } diff --git a/app/Http/Controllers/Api/UserController.php b/app/Http/Controllers/Api/UserController.php index 3e1382b..a163d9b 100644 --- a/app/Http/Controllers/Api/UserController.php +++ b/app/Http/Controllers/Api/UserController.php @@ -23,6 +23,7 @@ use App\Models\User; use App\Models\UserCode; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; +use App\Conductors\UserConductor; class UserController extends ApiController { @@ -48,32 +49,33 @@ class UserController extends ApiController /** * Display a listing of the resource. * - * @param \App\Filters\UserFilter $filter Filter object. + * @param Request $request The request. * @return \Illuminate\Http\Response */ - public function index(UserFilter $filter) + public function index(Request $request) { - $collection = $filter->filter(); + list($collection, $total) = UserConductor::request($request); + return $this->respondAsResource( $collection, - ['total' => $filter->foundTotal()] + ['total' => $total] ); } /** * Store a newly created user in the database. * - * @param UserStoreRequest $request The user update request. + * @param Request $request The request. * @return \Illuminate\Http\Response */ - public function store(UserStoreRequest $request) + public function store(Request $request) { - if ($request->user()->hasPermission('admin/user') !== true) { + if(UserConductor::creatable()) { + $user = User::create($request->all()); + return $this->respondAsResource(UserConductor::model($request, $user), [], HttpResponseCodes::HTTP_CREATED); + } else { return $this->respondForbidden(); } - - $user = User::create($request->all()); - return $this->respondAsResource((new UserFilter($request))->filter($user), [], HttpResponseCodes::HTTP_CREATED); } @@ -84,9 +86,14 @@ class UserController extends ApiController * @param User $user The user model. * @return \Illuminate\Http\Response */ - public function show(UserFilter $filter, User $user) + // public function show(UserFilter $filter, User $user) + public function show(Request $request, User $user) { - return $this->respondAsResource($filter->filter($user)); + if(UserConductor::viewable($user)) { + return $this->respondAsResource(UserConductor::model($request, $user)); + } + + return $this->respondForbidden(); } /** @@ -98,23 +105,23 @@ class UserController extends ApiController */ public function update(UserUpdateRequest $request, User $user) { - $input = []; - $updatable = ['username', 'first_name', 'last_name', 'email', 'phone', 'password']; + if(UserConductor::updatable($user)) { + $input = []; + $updatable = ['username', 'first_name', 'last_name', 'email', 'phone', 'password']; - if ($request->user()->hasPermission('admin/user') === true) { - $updatable = array_merge($updatable, ['email_verified_at']); - } elseif ($request->user()->is($user) !== true) { - return $this->respondForbidden(); + if ($request->user()->hasPermission('admin/user') === true) { + $updatable = array_merge($updatable, ['email_verified_at']); + } + + $input = $request->only($updatable); + if (array_key_exists('password', $input) === true) { + $input['password'] = Hash::make($request->input('password')); + } + + $user->update($input); + + return $this->respondAsResource(UserConductor::model($request, $user)); } - - $input = $request->only($updatable); - if (array_key_exists('password', $input) === true) { - $input['password'] = Hash::make($request->input('password')); - } - - $user->update($input); - - return $this->respondAsResource((new UserFilter($request))->filter($user)); } @@ -126,12 +133,12 @@ class UserController extends ApiController */ public function destroy(User $user) { - if ($user->hasPermission('admin/user') === false) { - return $this->respondForbidden(); + if(UserConductor::destroyable($user)) { + $user->delete(); + return $this->respondNoContent(); } - $user->delete(); - return $this->respondNoContent(); + return $this->respondForbidden(); } /**