- Mengoptimalkan middleware autentikasi di controller berikut:
- `BranchController`, `CurrencyController`, dan `HolidayCalendarController`.
- Mengganti penggunaan `Auth::guard('web')->user()` menjadi middleware `auth`.
- Menambahkan middleware closure untuk menetapkan properti `$this->user` setelah middleware `auth`.
- Penyesuaian pada semua pemanggilan terkait autentikasi pengguna untuk menggunakan `$this->user`.
- Refaktor `PermissionSeeder`:
- Menghapus metode `crudActions` beserta logika iterasi CRUD yang tidak digunakan.
- Menyederhanakan proses seeding untuk model `PermissionGroup` dengan `updateOrCreate`.
- Menghilangkan logika assignment izin dari seeder untuk mempercepat proses seeding.
- Menambahkan `PermissionSeeder` untuk inisialisasi data izin dengan struktur CRUD pada modul Basicdata.
- Data izin mencakup tindakan seperti `create`, `read`, `update`, `delete`, `export`, `authorize`, `report`, dan `restore`.
- Menyediakan relasi dengan grup izin menggunakan model `PermissionGroup`.
- Memanggil `PermissionSeeder` di `BasicdataDatabaseSeeder` untuk memastikan data izin terpasang saat proses seeding.
- Mengoptimalkan autentikasi pengguna di konstruktor controller:
- Mengganti logika middleware pada `BranchController`, `CurrencyController`, dan `HolidayCalendarController` dengan properti `$this->user`.
- Menggunakan `Auth::guard('web')->user()` sebagai standar pengelolaan autentikasi.
- Menghapus middleware yang tidak diperlukan demi meningkatkan kinerja kode.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Modifikasi `CurrencyController`:
- Tambahkan parameter `Request` pada method `export` untuk menerima input filter `search`.
- Perbarui logika ekspor agar mendukung pencarian berbasis parameter `search`.
- Perubahan pada `CurrencyExport`:
- Tambahkan konstruktor untuk menerima dan menyimpan parameter pencarian (`search`).
- Modifikasi query pada method `collection` untuk menambahkan filter berdasarkan `code`, `name`, atau `decimal_places` yang sesuai dengan parameter `search`.
- Hapus kolom `updated_at` dan `deleted_at` dari output ekspor.
- Perbaikan format data pada method `columnFormats`.
- Update pada view `currency/index.blade.php`:
- Tambahkan elemen JavaScript untuk mengatur URL parameter `search` pada tombol ekspor.
- Ganti event `change` pada input pencarian dengan `input` untuk meningkatkan respon pencarian secara real-time.
- Pastikan URL ekspor diperbarui setiap kali pengguna mengetik dalam kolom pencarian.
- Penyesuaian minor pada `branch/index.blade.php`:
- Hapus log yang tidak relevan sebelum proses ekspor.
Fitur ini memastikan proses ekspor data mata uang dapat disaring berdasarkan pencarian spesifik, memberikan fleksibilitas lebih kepada pengguna.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Memindahkan autentikasi user dari metode `getUser` ke properti `user` di konstruktor controller.
- Mengganti semua pemanggilan metode `getUser` dengan properti `$this->user`.
- Memastikan validasi hak akses user menggunakan properti `$this->user` di seluruh fungsi controller:
- `BranchController`
- `CurrencyController`
- `HolidayCalendarController`.
- Menghapus rute restore yang tidak digunakan pada Branch dan Currency.
- Menggunakan `Route::resource` untuk HolidayCalendarController agar lebih ringkas.
- Menambahkan dependensi `use Illuminate\Support\Facades\Auth` pada HolidayCalendarController demi konsistensi autentikasi.
Perubahan ini bertujuan untuk menyederhanakan pengelolaan user dan meningkatkan konsistensi autentikasi dalam modul.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menambahkan validasi Role-based Access Control (RBAC) untuk tindakan CRUD mata uang:
1. Validasi untuk `read`, `create`, `update`, dan `delete` pada CurrencyController.
2. Menambahkan metode `getUser()` untuk memperoleh user terautentikasi.
3. Menangani respon dengan HTTP status `403 Forbidden` jika tidak memiliki izin.
- Memperbaiki rute dan logika `store` serta `update`:
1. Validasi terhadap atribut `code` disesuaikan dengan skenario update (menggunakan ID).
2. Menambahkan metode `authorize()` pada CurrencyRequest untuk memastikan izin aksi sesuai role (CRUD spesifik).
- Perubahan pada view blade:
1. Menambahkan validasi izin sebelum rendering tombol `Tambah`, `Hapus`, `Export`, dan `Edit`.
2. Menambahkan logika dinamis untuk izin terkait.
- Tambahan logika pada export ke Excel:
1. Validasi izin untuk `basic-data.export` sebelum mengunduh file.
- Test Feature dengan PHPUnit:
1. Menambahkan test coverage untuk tindakan CRUD, validasi izin role, dan ekspor data.
2. Menggunakan database segar dengan RefreshDatabase.
- Refactor penggunaan model Currency di `CurrencyExport` agar sesuai namespace setelah modifikasi.
- Respon di `destroy` dan `deleteMultiple` dikembalikan dalam format JSON untuk standardisasi.
- Memastikan test mencakup berbagai skenario:
1. User dengan izin vs tanpa izin.
2. Operasi data valid dan tidak valid.
Penyesuaian ini meningkatkan keamanan dan manajemen peran pada modul Currency, serta memastikan pengujian yang mendalam terhadap semua fitur baru.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Ubah perhitungan jumlah halaman untuk menggunakan jumlah record yang difilter.
- Sesuaikan pengambilan nomor halaman saat ini dari request.
- Ganti event listener pencarian dari 'input' menjadi 'change' untuk meningkatkan performa.
- Tambahkan pemanggilan fungsi untuk mengatur ulang halaman ke 1 saat pencarian dilakukan.
- Menambahkan kolom simbol pada tabel mata uang di halaman index.
- Menambahkan input simbol pada form pembuatan mata uang.
- Memperbarui aturan validasi untuk simbol pada CurrencyRequest.
- Memperbarui model Currency untuk menyertakan atribut simbol.
- Memperbarui migrasi untuk menambahkan kolom simbol pada tabel currencies.
- Menambahkan endpoint `deleteMultiple` pada CurrencyController untuk menghapus beberapa data secara bersamaan.
- Memperbarui tampilan index mata uang untuk mendukung fungsi hapus batch, termasuk tombol "Delete Selected".
- Menambahkan logika pada JavaScript untuk menangani penghapusan batch menggunakan AJAX.
- Memperbarui visibilitas tombol hapus berdasarkan checkbox yang dipilih pada tabel.