getUser($request); $this->authorize($user, $process); $resources = $this->findReviews($user, $process); return $this->getPaginatedContentResponse( $resources->limit(...$this->getOffsetAndLimit()), count($resources) ); } /** * @throws AuthorizationFailedException */ private function authorize(User $user, PeerReviewProcess $process): void { if (!Authority::canIndexReviewsOfProcesses($user, $process)) { throw new AuthorizationFailedException(); } } private function findReviews(User $user, PeerReviewProcess $process): \SimpleCollection { return $process->peer_reviews->filter(function ($peerReview) use ($user) { return Authority::canShowPeerReview($user, $peerReview); }); } }