- Mengubah properti `user` dari `public` menjadi `protected` di semua controller terkait:
- **PermissionsController**
- **PositionsController**
- **RolesController**
- **UsersController**
- Menghapus inisialisasi manual user dengan `Auth::guard('web')->user()` dari konstruktor.
- Menambahkan middleware:
- `auth` untuk memastikan bahwa hanya pengguna yang telah login dapat mengakses controller.
- Middleware tambahan anonim untuk mengassign properti `user` setelah middleware `auth` dijalankan.
- 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>
- Mengubah logika akses `PermissionsController` dengan:
- Menambahkan konstruktor untuk mendefinisikan user yang terautentikasi.
- Mengganti logika permission check dari `permissions.*` ke `usermanagement.*`.
- Menambahkan validasi `abort` untuk operasi CRUD jika user tidak memiliki hak akses.
- Memperbarui respons penghapusan permission menjadi JSON yang lebih semantik.
- Memperbarui `PermissionGroup` untuk:
- Menambahkan mekanisme auto-generated slug saat membuat instance baru.
- Memperbaiki export logic pada `PermissionExport` dengan:
- Mengonversi array `roles` ke collection sebelum menggunakan fungsi `pluck`.
- Menambahkan soft delete pada model `Permission`, memungkinkan penghapusan data non-permanen.
- Menghapus elemen filter dropdown di view `permissions.index` untuk meningkatkan clarity UI.
- Menambahkan comprehensive test suite pada `PermissionsControllerTest` untuk:
- Menguji validasi CRUD pada permission dengan role dan tanpa role.
- Menguji restore permissions yang terhapus.
- Menguji filter, pencarian, dan sorting pada datatables.
- Menguji export permissions.
Perubahan ini meningkatkan pengelolaan permission, validasi akses, dan memperkaya pengujian untuk memastikan kualitas fitur permission management.
- Ubah pencarian pada `PermissionsController` dan `UsersController`:
- Gunakan metode `whereRaw` dengan `LOWER` untuk pencocokan case-insensitive pada kolom `name` dan `email`.
- Tambahkan `HasFactory` pada model `User` agar mendukung pembuatan data dummy menggunakan factory.
- Implementasi fungsi `newFactory()` pada model `User` untuk merujuk ke UserFactory.
- Tambahkan file factory baru (`UserFactory`) untuk model `User`:
- Definisikan state default seperti `name`, `email`, `password`, dan `nik` untuk keperluan pembuatan data dummy.
- Gunakan password secara default terenkripsi dengan `bcrypt`.