Update Role fasilitator, kordinator
This commit is contained in:
@@ -18,7 +18,7 @@ class PengurusBumdesController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class PengurusBumdesController extends Controller
|
||||
});
|
||||
}
|
||||
|
||||
if (auth()->user()->role->value === 'fasilitator') {
|
||||
if (auth()->user()->role->value === 'enumerator') {
|
||||
$query->where('created_by', auth()->id());
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ class PengurusBumdesController extends Controller
|
||||
|
||||
public function create()
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ class PengurusBumdesController extends Controller
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ class PengurusBumdesController extends Controller
|
||||
|
||||
public function edit(string $id)
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ class PengurusBumdesController extends Controller
|
||||
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -133,7 +133,7 @@ class PengurusBumdesController extends Controller
|
||||
|
||||
public function destroy(string $id)
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -146,7 +146,7 @@ class PengurusBumdesController extends Controller
|
||||
|
||||
public function kelembagaanAktor(string $id)
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -166,7 +166,7 @@ class PengurusBumdesController extends Controller
|
||||
|
||||
public function storeKelembagaanAktor(Request $request, string $id)
|
||||
{
|
||||
if (! Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (! Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ class PengurusBumdesController extends Controller
|
||||
{
|
||||
$query = PengurusBumdes::query();
|
||||
|
||||
if (auth()->user()->role->value === 'fasilitator') {
|
||||
if (auth()->user()->role->value === 'enumerator') {
|
||||
$query->where('created_by', auth()->id());
|
||||
}
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ class DemografiPetaniController extends Controller
|
||||
{
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@ class DemografiPetaniController extends Controller
|
||||
|
||||
public function karakteristik(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -94,7 +94,7 @@ class IndeksPetaniController extends Controller
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ class InternationalMarketController extends Controller
|
||||
{
|
||||
public function __invoke()
|
||||
{
|
||||
abort_unless(Gate::allows('super_admin') || Gate::allows('admin') || Gate::allows('fasilitator'), 403);
|
||||
abort_unless(Gate::allows('super_admin') || Gate::allows('admin') || Gate::allows('koordinator') || Gate::allows('enumerator'), 403);
|
||||
|
||||
// File cache keeps external quotes independent of the application database.
|
||||
$cache = Cache::store('file');
|
||||
|
||||
@@ -17,7 +17,7 @@ class ProfilPetaniController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
$title = 'Dashboard Profil Petani';
|
||||
|
||||
@@ -37,7 +37,7 @@ class SummaryController extends Controller
|
||||
|
||||
public function produktivitas(Request $request)
|
||||
{
|
||||
if (!Gate::allows('super_admin') && !Gate::allows('admin') && !Gate::allows('fasilitator')) {
|
||||
if (!Gate::allows('super_admin') && !Gate::allows('admin') && !Gate::allows('koordinator') && !Gate::allows('enumerator')) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ class SummaryController extends Controller
|
||||
|
||||
public function mapInformation(Request $request)
|
||||
{
|
||||
if (!Gate::allows('super_admin') && !Gate::allows('admin') && !Gate::allows('fasilitator')) {
|
||||
if (!Gate::allows('super_admin') && !Gate::allows('admin') && !Gate::allows('koordinator') && !Gate::allows('enumerator')) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ class SummaryController extends Controller
|
||||
|
||||
public function pasar(Request $request)
|
||||
{
|
||||
if (!Gate::allows('super_admin') && !Gate::allows('admin') && !Gate::allows('fasilitator')) {
|
||||
if (!Gate::allows('super_admin') && !Gate::allows('admin') && !Gate::allows('koordinator') && !Gate::allows('enumerator')) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ class SurveyPetaniController extends Controller
|
||||
// Progres per enumerator
|
||||
|
||||
$enumerators = User::query()
|
||||
->where('role', 'fasilitator')
|
||||
->where('role', 'enumerator')
|
||||
->withCount([
|
||||
'petaniDibuat as done',
|
||||
])
|
||||
|
||||
@@ -24,7 +24,7 @@ class PetaniCPMController extends Controller
|
||||
{
|
||||
public function index(Request $request): View
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ class PetaniCPMController extends Controller
|
||||
|
||||
public function create(Request $request): View
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ class PetaniCPMController extends Controller
|
||||
*/
|
||||
public function store(Request $request): RedirectResponse
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -147,7 +147,7 @@ class PetaniCPMController extends Controller
|
||||
*/
|
||||
public function show(string $id): View
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -161,7 +161,7 @@ class PetaniCPMController extends Controller
|
||||
*/
|
||||
public function edit(Request $request, string $id): View
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -198,7 +198,7 @@ class PetaniCPMController extends Controller
|
||||
*/
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -251,7 +251,7 @@ class PetaniCPMController extends Controller
|
||||
*/
|
||||
public function destroy(string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ class ValueBasisDataController extends Controller
|
||||
|
||||
public function index(Request $request, string $tabelId): View
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Web\Konfigurasi;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
|
||||
/**
|
||||
* Mengatur komoditas yang ditangani seorang koordinator.
|
||||
*/
|
||||
class KoordinatorKomoditasController extends Controller
|
||||
{
|
||||
public function update(Request $request, User $user)
|
||||
{
|
||||
abort_unless(Gate::any(['super_admin', 'admin']), 403);
|
||||
|
||||
if (! $user->isKoordinator()) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => 'Komoditas hanya bisa diatur untuk user dengan role Koordinator.',
|
||||
], 422);
|
||||
}
|
||||
|
||||
$validated = $request->validate([
|
||||
'komoditas_ids' => ['required', 'array', 'min:1'],
|
||||
'komoditas_ids.*' => ['integer', 'exists:master_komoditas,id'],
|
||||
], [
|
||||
'komoditas_ids.required' => 'Pilih minimal satu komoditas.',
|
||||
'komoditas_ids.min' => 'Pilih minimal satu komoditas.',
|
||||
'komoditas_ids.*.exists' => 'Komoditas yang dipilih tidak valid.',
|
||||
]);
|
||||
|
||||
self::simpanPenugasan($user, $validated['komoditas_ids']);
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Komoditas koordinator berhasil diperbarui.',
|
||||
'data' => $user->komoditasKoordinatorIds(),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Menyamakan penugasan koordinator dengan daftar komoditas yang dipilih.
|
||||
* Penugasan yang dilepas di-soft delete, penugasan baru dibuat.
|
||||
*/
|
||||
public static function simpanPenugasan(User $user, array $komoditasIds): void
|
||||
{
|
||||
$komoditasIds = array_values(array_unique(array_map('intval', $komoditasIds)));
|
||||
|
||||
DB::transaction(function () use ($user, $komoditasIds) {
|
||||
$user->koordinatorKomoditas()
|
||||
->whereNotIn('komoditas_id', $komoditasIds)
|
||||
->get()
|
||||
->each->delete();
|
||||
|
||||
$sudahAda = $user->komoditasKoordinatorIds();
|
||||
|
||||
foreach (array_diff($komoditasIds, $sudahAda) as $komoditasId) {
|
||||
$user->koordinatorKomoditas()->create([
|
||||
'komoditas_id' => $komoditasId,
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -8,16 +8,29 @@ use App\Models\User;
|
||||
use App\Models\Profile;
|
||||
use App\Enums\Role;
|
||||
use App\Models\Wilayah\Provinsi;
|
||||
use App\Models\Pertanian\Komoditas;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
// Manajemen pengguna hanya untuk super admin & admin (sama dengan menu "Daftar Pengguna").
|
||||
// Berlaku untuk semua method di controller ini.
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware(function (Request $request, \Closure $next) {
|
||||
abort_unless($request->user() && Gate::forUser($request->user())->any(['super_admin', 'admin']), 403);
|
||||
|
||||
return $next($request);
|
||||
});
|
||||
}
|
||||
|
||||
public function index(Request $request)
|
||||
{
|
||||
$query = User::orderBy('created_at', 'desc');
|
||||
$query = User::with('koordinatorKomoditas.komoditas:id,nama')->orderBy('created_at', 'desc');
|
||||
|
||||
$tab = $request->get('tab', 'active');
|
||||
if ($tab === 'pending') {
|
||||
@@ -45,8 +58,15 @@ class UserController extends Controller
|
||||
$pendingUsers = User::whereNull('email_verified_at')->count();
|
||||
|
||||
$roles = Role::cases();
|
||||
$komoditasOptions = $this->komoditasOptions();
|
||||
|
||||
return view('konfigurasi.user.index', compact('users', 'totalUsers', 'activeUsers', 'pendingUsers', 'roles', 'tab'));
|
||||
return view('konfigurasi.user.index', compact('users', 'totalUsers', 'activeUsers', 'pendingUsers', 'roles', 'tab', 'komoditasOptions'));
|
||||
}
|
||||
|
||||
// Komoditas utama yang bisa ditugaskan ke koordinator
|
||||
private function komoditasOptions()
|
||||
{
|
||||
return Komoditas::select('id', 'nama')->where('is_utama', true)->orderBy('nama')->get();
|
||||
}
|
||||
|
||||
public function verify(Request $request, $id)
|
||||
@@ -92,8 +112,9 @@ class UserController extends Controller
|
||||
{
|
||||
$roles = Role::cases();
|
||||
$provinsi = Provinsi::orderBy('nama', 'asc')->get();
|
||||
$komoditasOptions = $this->komoditasOptions();
|
||||
|
||||
return view('konfigurasi.user.add', compact('roles', 'provinsi'));
|
||||
return view('konfigurasi.user.add', compact('roles', 'provinsi', 'komoditasOptions'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
@@ -104,6 +125,8 @@ class UserController extends Controller
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users,email'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
'role' => ['required', 'string'],
|
||||
'komoditas_ids' => ['nullable', 'array', 'required_if:role,' . Role::KOORDINATOR->value],
|
||||
'komoditas_ids.*' => ['integer', 'exists:master_komoditas,id'],
|
||||
'telepon' => ['required', 'max:13'],
|
||||
'desa_kelurahan_id' => ['nullable', 'exists:desa_kelurahan,id'],
|
||||
'ktp' => ['nullable', 'min:16', 'max:16'],
|
||||
@@ -116,6 +139,7 @@ class UserController extends Controller
|
||||
'password.confirmed' => 'Konfirmasi password tidak cocok!',
|
||||
'password.min' => 'Password minimal 8 karakter!',
|
||||
'email.unique' => 'Email sudah terdaftar.',
|
||||
'komoditas_ids.required_if' => 'Pilih minimal satu komoditas untuk koordinator.',
|
||||
'required' => 'Kolom :attribute wajib diisi.'
|
||||
]);
|
||||
|
||||
@@ -163,6 +187,10 @@ class UserController extends Controller
|
||||
'created_by' => auth()->id(),
|
||||
'updated_by' => auth()->id(),
|
||||
]);
|
||||
|
||||
if ($user->isKoordinator()) {
|
||||
KoordinatorKomoditasController::simpanPenugasan($user, $request->input('komoditas_ids', []));
|
||||
}
|
||||
});
|
||||
|
||||
if ($request->expectsJson()) {
|
||||
|
||||
@@ -27,7 +27,7 @@ class AsetKelompokTaniController extends Controller
|
||||
|
||||
private function authorizeAccess(): void
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ class BantuanKelompokTaniController extends Controller
|
||||
{
|
||||
private function authorizeAccess(): void
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ class PendidikanPelatihanController extends Controller
|
||||
{
|
||||
private function authorizeAccess(): void
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ class PengurusKelompokTaniController extends Controller
|
||||
{
|
||||
private function authorizeAccess(): void
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,13 +32,13 @@ class PetaniController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
$provinsi = Provinsi::select('id', 'kode', 'nama')->orderBy('kode', 'asc')->get();
|
||||
$userRole = auth()->user()->role->value;
|
||||
$showFasilitatorColumn = in_array($userRole, ['super_admin', 'admin'], true);
|
||||
$showFasilitatorColumn = in_array($userRole, ['super_admin', 'admin', 'koordinator'], true);
|
||||
$defaultKabupaten = KabupatenKota::select('id', 'nama')
|
||||
->whereRaw('lower(nama) like ?', ['%ngada%'])
|
||||
->orderBy('nama')
|
||||
@@ -102,10 +102,19 @@ class PetaniController extends Controller
|
||||
$query->where('desa_kelurahan_id', $request->desa_kelurahan_id);
|
||||
}
|
||||
|
||||
if ($userRole === 'fasilitator') {
|
||||
if ($userRole === 'enumerator') {
|
||||
$query->where('created_by', auth()->user()->id);
|
||||
}
|
||||
|
||||
// Koordinator hanya melihat petani dengan komoditas yang ditugaskan
|
||||
$komoditasKoordinatorIds = $userRole === 'koordinator'
|
||||
? auth()->user()->komoditasKoordinatorIds()
|
||||
: null;
|
||||
|
||||
if ($komoditasKoordinatorIds !== null) {
|
||||
$query->whereIn('komoditas_id', $komoditasKoordinatorIds);
|
||||
}
|
||||
|
||||
$totalPetani = (clone $query)->count();
|
||||
$totalPetaniLakiLaki = (clone $query)->where('jenis_kelamin', 1)->count();
|
||||
$totalPetaniPerempuan = (clone $query)->where('jenis_kelamin', 0)->count();
|
||||
@@ -165,10 +174,15 @@ class PetaniController extends Controller
|
||||
->orWhereRaw('lower(ktp) like ?', ["%{$search}%"]);
|
||||
});
|
||||
})
|
||||
->when($userRole === 'fasilitator', function ($query) {
|
||||
->when($userRole === 'enumerator', function ($query) {
|
||||
$query->whereHas('petani', function ($petani) {
|
||||
$petani->where('created_by', auth()->id());
|
||||
});
|
||||
})
|
||||
->when($komoditasKoordinatorIds !== null, function ($query) use ($komoditasKoordinatorIds) {
|
||||
$query->whereHas('petani', function ($petani) use ($komoditasKoordinatorIds) {
|
||||
$petani->whereIn('komoditas_id', $komoditasKoordinatorIds);
|
||||
});
|
||||
});
|
||||
|
||||
$totalLahan = (clone $lahanSummaryQuery)->count();
|
||||
@@ -216,7 +230,7 @@ class PetaniController extends Controller
|
||||
|
||||
public function create()
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -288,7 +302,7 @@ class PetaniController extends Controller
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -320,7 +334,7 @@ class PetaniController extends Controller
|
||||
|
||||
public function show(string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -332,7 +346,7 @@ class PetaniController extends Controller
|
||||
|
||||
public function edit(string $id, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -353,7 +367,7 @@ class PetaniController extends Controller
|
||||
|
||||
public function update(Request $request, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -395,14 +409,14 @@ class PetaniController extends Controller
|
||||
|
||||
public function destroy(string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
return response()->json(['message' => 'Anda tidak memiliki akses.'], 403);
|
||||
}
|
||||
|
||||
try {
|
||||
$petani = Petani::findOrFail($id);
|
||||
|
||||
if (auth()->user()->role->value === 'fasilitator' && $petani->created_by !== auth()->id()) {
|
||||
if (auth()->user()->role->value === 'enumerator' && $petani->created_by !== auth()->id()) {
|
||||
return response()->json(['message' => 'Anda tidak memiliki akses.'], 403);
|
||||
}
|
||||
|
||||
@@ -429,7 +443,7 @@ class PetaniController extends Controller
|
||||
|
||||
public function showImage(string $id, string $field)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ class PetaniLahanController extends Controller
|
||||
{
|
||||
public function index($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -52,7 +52,7 @@ class PetaniLahanController extends Controller
|
||||
|
||||
public function create($petaniId)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -194,7 +194,7 @@ class PetaniLahanController extends Controller
|
||||
|
||||
public function store($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -292,7 +292,7 @@ class PetaniLahanController extends Controller
|
||||
|
||||
public function show(string $petaniId, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -310,7 +310,7 @@ class PetaniLahanController extends Controller
|
||||
|
||||
public function edit(string $petaniId, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -335,7 +335,7 @@ class PetaniLahanController extends Controller
|
||||
|
||||
public function update(Request $request, string $petaniId, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -462,7 +462,7 @@ class PetaniLahanController extends Controller
|
||||
|
||||
public function destroy(string $petaniId, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -481,7 +481,7 @@ class PetaniLahanController extends Controller
|
||||
|
||||
public function summary(string $petaniId)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class PetaniLahanTanamanController extends Controller
|
||||
*/
|
||||
public function show(string $petaniId, string $lahanId, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ class PetaniLahanTanamanController extends Controller
|
||||
|
||||
public function update(Request $request, string $petaniId, string $lahanId, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -103,7 +103,7 @@ class PetaniLahanTanamanController extends Controller
|
||||
*/
|
||||
public function destroy(string $petaniId, string $lahanId, string $id)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ class PraktikBudidayaController extends Controller
|
||||
{
|
||||
public function index($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -139,7 +139,7 @@ class PraktikBudidayaController extends Controller
|
||||
|
||||
public function store($petaniId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -247,7 +247,7 @@ class PraktikBudidayaController extends Controller
|
||||
|
||||
public function edit($petaniId, $praktikBudidayaId)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ class PraktikBudidayaController extends Controller
|
||||
|
||||
public function update($petaniId, $praktikBudidayaId, Request $request)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ class SkorPetaniController extends Controller
|
||||
*/
|
||||
public function index(string $petaniId)
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'koordinator', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ class SurveyKelompokTaniController extends Controller
|
||||
{
|
||||
private function authorizeAccess(): void
|
||||
{
|
||||
if (!Gate::any(['super_admin', 'admin', 'fasilitator'])) {
|
||||
if (!Gate::any(['super_admin', 'admin', 'enumerator'])) {
|
||||
abort(403);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user