middleware( function ($request, $next) { $this->repository = app(AccountRepositoryInterface::class); // new way of user group validation $userGroup = $this->validateUserGroup($request); $this->repository->setUserGroup($userGroup); return $next($request); } ); } /** * TODO see autocomplete/account controller for list. */ public function index(IndexRequest $request): JsonResponse { $this->repository->resetAccountOrder(); $types = $request->getAccountTypes(); $instructions = $request->getSortInstructions('accounts'); $accounts = $this->repository->getAccountsByType($types, $instructions); $pageSize = $this->parameters->get('limit'); $count = $accounts->count(); $accounts = $accounts->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); $paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page')); $transformer = new AccountTransformer(); $this->parameters->set('sort', $instructions); $transformer->setParameters($this->parameters); // give params to transformer return response() ->json($this->jsonApiList('accounts', $paginator, $transformer)) ->header('Content-Type', self::CONTENT_TYPE); } }