- Mengganti respons `abort(403)` menjadi respons JSON yang lebih informatif di beberapa controller:
- **PermissionsController**
- Penyesuaian pada metode penghapusan dan pengambilan data untuk datatable.
- Menampilkan pesan error dan status success=false jika pengguna tidak memiliki izin.
- **PositionsController**
- Perubahan serupa diterapkan pada metode penghapusan posisi dan pengambilan data untuk datatable.
- **RolesController**
- Penyesuaian dilakukan pada metode pengambilan data untuk datatable.
- **UsersController**
- Ubah logika pada metode penghapusan dan pengambilan data pengguna ke JSON.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- **Perbaikan Izin Akses**:
- Mengganti kunci permission pada beberapa metode agar lebih konsisten:
- `usermanagement.store` menjadi `usermanagement.create` (store).
- `usermanagement.edit` menjadi `usermanagement.update` (edit/update).
- `usermanagement.read` tetap diatur sesuai context (index/view).
- Menambahkan `abort(403)` pada metode yang belum memiliki pengecekan izin untuk memastikan keamanan.
- **Peningkatan Fitur**:
- Menambahkan fitur ekspor pada `PermissionsController`, `PositionsController`, `RolesController`, dan `UsersController`:
- Cek validasi izin sebelum melakukan ekspor.
- Mendukung pengunduhan file Excel.
- **Optimalisasi Logika**:
- Menggabungkan properti `user` di semua controller dengan mendefinisikannya melalui konstruktor.
- Menghapus redundansi load user menggunakan `Auth::guard('web')->user()` di setiap metode.
- Menyederhanakan pengaturan logging aktivitas untuk setiap operasi CRUD.
- **Penyesuaian & Penambahan**:
- Menambahkan slug `restore` ke daftar permission terkait untuk operasi pemulihan yang diimplementasikan.
- Menghapus komentar kode yang tidak digunakan dan mendokumentasikan ulang logika penting untuk lebih jelas.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Menghapus konstruktor PositionsController untuk middleware autentikasi yang tidak digunakan.
- Mengganti izin `positions.*` menjadi `usermanagement.*` di semua fungsi untuk konsistensi otorisasi.
- Menambahkan validasi untuk memastikan posisi tidak dapat dihapus jika memiliki role terkait.
- Mengoptimalkan logika pada paginasi di API datatables, termasuk default page dan size.
- Menyesuaikan response error saat gagal hapus posisi dengan redirect ke halaman index.
- Menambahkan pengujian unit dan fitur terhadap CRUD dan otorisasi PositionsController:
- Menguji akses halaman index, create, edit, dan delete posisi.
- Validasi penyimpanan, pembaruan, dan penghapusan posisi terhadap izin pengguna.
- Menguji akses eksport dan fungsionalitas datatables API.
- Validasi posisi tidak terhapus jika terikat dengan role.
- Tambahkan model `Position` dengan atribut `code`, `name`, `level`, serta logging aktivitas dan relasi ke `roles`.
- Tambahkan migrasi untuk membuat tabel `positions` dengan soft deletes.
- Tambahkan `PositionExport` untuk kebutuhan ekspor data posisi ke Excel dengan penyaringan berdasarkan kata kunci.
- Buat `PositionsController` untuk CRUD posisi, termasuk validasi, ekspor, dan data API untuk DataTables.
- Metode: `index`, `create`, `store`, `edit`, `update`, `destroy`, `export`, `dataForDatatables`.
- Tambahkan validasi berbasis request `PositionRequest` untuk memastikan data valid sebelum disimpan/diubah.
- Tambahkan tampilan blade untuk daftar posisi (`index.blade.php`) dan form tambah/edit posisi (`create.blade.php`) dengan dukungan DataTables dan SweetAlert.
- Perbarui file `module.json` untuk menambahkan menu "Positions" di User Management.
- Tambahkan breadcrumbs untuk halaman posisi (daftar, tambah, edit) di file `breadcrumbs.php`.
- Perbarui `routes/web.php` untuk menambahkan route terkait posisi.
Fitur ini memungkinkan pengelolaan posisi lengkap termasuk CRUD, ekspor, dan integrasi dengan DataTables.