user(); abort_unless($user && in_array($user->role, self::ROLE_DIIZINKAN, true), 403); $petani = $request->route('petani'); // Data terverifikasi dikunci: tidak bisa diubah, ditambah, atau dihapus (hanya dilihat). // Perubahan status ditangani sendiri oleh PetaniStatusController. $permintaanUbah = ! $request->isMethodSafe() && ! $request->routeIs('petani.status.*'); // Petani hanya dimuat kalau perlu dicek (koordinator, atau permintaan simpan/hapus). if ($petani === null || (! $user->isKoordinator() && ! $permintaanUbah)) { return $next($request); } $petani = $petani instanceof Petani ? $petani : Petani::find($petani); if ($user->isKoordinator()) { abort_unless( $petani && $user->bolehAksesPetani($petani), 403, 'Petani ini bukan bagian dari komoditas yang Anda koordinasikan.' ); } if ($permintaanUbah && $petani?->status === StatusDataPetani::TERVERIFIKASI) { $pesan = 'Data petani sudah terverifikasi dan tidak dapat diubah atau dihapus.'; if ($request->expectsJson()) { abort(403, $pesan); } return back()->with('status_petani_error', $pesan); } return $next($request); } }