getUser($request); $this->authorize($user); $resources = $this->findPeerReviews($course, $user); return $this->getPaginatedContentResponse( array_slice($resources, ...$this->getOffsetAndLimit()), count($resources) ); } /** * @throws AuthorizationFailedException */ private function authorize(User $user): void { if (!Authority::canIndexPeerReviews($user)) { throw new AuthorizationFailedException(); } } private function findPeerReviews(Course $course, User $user): array { return array_filter(PeerReview::findByCourse($course), function ($peerReview) use ($user) { return Authority::canShowPeerReview($user, $peerReview); }); } }