authorizeProject($request, $project); abort_unless($issue->project_id === $project->id, 404); abort_unless($event->issue_id === $issue->id, 404); $previousEvent = Event::where('issue_id', $issue->id) ->where('timestamp', '<', $event->timestamp) ->orderByDesc('timestamp') ->first(); $nextEvent = Event::where('issue_id', $issue->id) ->where('timestamp', '>', $event->timestamp) ->orderBy('timestamp') ->first(); return view('events.show', [ 'project' => $project, 'issue' => $issue, 'event' => $event, 'previousEvent' => $previousEvent, 'nextEvent' => $nextEvent, ]); } private function authorizeProject(Request $request, Project $project): void { abort_unless( $request->user()->projects()->where('projects.id', $project->id)->exists(), 403, ); } }