- Memperbarui UsersController:
- Mengaktifkan middleware untuk menginisialisasi pengguna yang terautentikasi.
- Mengubah nama izin dari pola 'users.*' menjadi 'usermanagement.*' untuk konsistensi.
- Menggunakan Storage Facade untuk operasi penyimpanan file tanda tangan.
- Menambahkan validasi untuk direktori sebelum menyimpan file baru.
- Mengubah metode untuk memberikan respons JSON pada penghapusan pengguna.
- Memperbarui views/users/index.blade.php:
- Menghapus dropdown filter yang tidak digunakan.
- Menambahkan tombol Export to Excel dan Add User dengan styling yang diperbarui.
- Menambahkan file `UsersControllerTest` untuk memastikan kelengkapan pengujian:
- Pengujian CRUD (Create, Read, Update, Delete) pengguna.
- Pengujian pagination, sorting, dan filtering untuk datatable.
- Pengujian pengelolaan file tanda tangan pengguna (penyimpanan baru dan penghapusan tanda tangan lama).
- Pengujian pemulihan untuk soft-deleted users.
- Pengujian validasi peran dan izin untuk setiap tindakan.
- Memastikan konsistensi dan reliabilitas proses pengelolaan pengguna melalui pengujian otomatis.
- 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`.
Mengubah query di UsersController untuk mengambil data roles. Memperbarui tampilan di users/index.blade.php untuk menampilkan kolom role dengan informasi yang sesuai.
Menambahkan logika sorting berdasarkan `sortOrder` dan `sortField` jika ada pada permintaan. Selain itu, memindahkan perhitungan total record ke posisi yang lebih tepat untuk menghindari pengaruh dari pagination.