- Memperbaiki fungsi export data pengguna dengan format yang lebih rapi
- Update semua controller (Permissions, Positions, Roles, Users) untuk konsistensi response dan error handling
- Tambahan fungsi `goPage(1)` pada event listener pencarian untuk langsung ke halaman pertama saat melakukan pencarian
- 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>
- **Perubahan pada Seeder**:
- Menghapus grup permission `basic-data` dari `PermissionGroupSeeder`, menyisakan hanya `usermanagement` untuk konsistensi.
- Menambahkan slug baru `restore` ke daftar izin di `PermissionsSeeder` untuk mendukung operasi pemulihan data pada fitur yang relevan.
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>
- Perbarui file `module.json`:
- Menambahkan path baru pada array `files` untuk memuat helper: `app/Helpers/RolePermission.php`.
- Tambahkan helper baru `RolePermission.php`:
- Fungsi `check_permission`:
- Mengecek apakah pengguna yang terautentikasi memiliki permission tertentu.
- Mendukung opsi untuk mengembalikan respons `abort(403)` jika permission tidak valid.
- Fungsi `user_has_role`:
- Mengecek apakah pengguna yang terautentikasi memiliki salah satu role dari daftar yang diberikan.
- Membandingkan nama role pengguna dengan array input menggunakan mekanisme intersect.
Signed-off-by: Daeng Deni Mardaeni <ddeni05@gmail.com>
- Mengganti penggunaan `Wildside\Userstamps\Userstamps` dengan `Mattiverse\Userstamps\Traits\Userstamps`:
- Pada model `User`.
- Pada model `Base`.
- Perubahan ini mengatasi masalah kompatibilitas dengan dependensi lama dan memastikan penggunaan fitur userstamps tetap berfungsi dengan baik.
- 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.
- 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.
- Menambahkan pengecekan lebih rinci ketika pengguna mencoba mengakses, membuat, mengubah, atau menghapus role berdasarkan perizinan spesifik (usermanagement.read, usermanagement.create, dll.).
- Menghapus komentar kode yang tidak digunakan pada metode middleware.
- Menggunakan class Exception secara konsisten untuk penanganan error dan pengembalian pesan error di seluruh metode.
- Memperbaiki komentar dan dokumentasi kode agar lebih relevan dengan implementasi saat ini.
- Menyederhanakan dan mengoptimasi pengaturan sorting pada data roles, termasuk sorting case-insensitive.
- Menyesuaikan kunci perizinan dari 'roles.*' menjadi 'usermanagement.*' untuk kesesuaian dengan grup perizinan.
test(roles): menambah RolesControllerTest dengan cakupan pengujian mendalam
- Membuat pengujian lengkap untuk semua metode di RolesController, termasuk pengujian izin akses, proses penyimpanan, penghapusan, dan pemulihan role.
- Menambahkan pengujian untuk fitur datatables: pencarian, penyortiran, dan pengambilan data yang benar.
- Menguji validasi perizinan granular untuk membuat, mengedit, menghapus, dan memulihkan role.
- Memastikan respon API sesuai ekspektasi saat pengguna tidak memiliki izin yang dibutuhkan.
- Memastikan penghapusan lunak dan mekanisme pemulihan role berfungsi seperti yang diharapkan.
- 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.
- Modifikasi form pembuatan role:
- Tambahkan class `tomselect` pada elemen dropdown posisi.
- Update label tingkat jabatan pada tampilan opsi dropdown.
- Pembaruan tabel pada halaman list role:
- Tambah kolom baru: "Position" dan "Tingkat Jabatan".
- Kolom baru dapat diurutkan.
- Update logika pencarian dan pengurutan:
- Izinkan pencarian berdasarkan nama posisi dan tingkat jabatan.
- Tambahkan pengurutan data berdasarkan nama posisi dan tingkat jabatan dengan join table `positions`.
- Perbaikan pada paginasi dan penghitungan data:
- Revisi query agar menghindari duplikasi data akibat join tabel.
- Ekspor data:
- Tambahkan informasi kolom baru "Position" dan "Tingkat Jabatan" pada file Excel hasil ekspor.
- Perbarui header dan pengaturan format kolom pada file Excel.
Perubahan ini memperluas fleksibilitas pada manajemen role dengan menambahkan dimensi posisi dan tingkat jabatan baik dalam tampilan UI maupun data backend.
- Tambahkan relasi posisi dengan menambahkan kolom `position_id` pada tabel roles melalui migrasi.
- Perbarui fungsi pada `RolesController` untuk menyertakan posisi dalam proses CRUD.
- Gunakan model `Position` untuk mendapatkan daftar posisi baik saat membuat maupun mengedit role.
- Sesuaikan nama permission dari `roles.view` ke `roles.read`, `roles.store` ke `roles.create`, dan `roles.edit` ke `roles.update` agar konsisten.
- Perbarui validasi di `RoleRequest` untuk mendukung input `position_id`.
- Tambahkan properti `position_id` ke atribut `fillable` di model Role untuk mendukung mass assignment.
- Buat fungsi relasi `position()` pada model Role untuk mereferensikan ke model Position.
- Perbarui tampilan form role (`create.blade.php`):
- Tambahkan dropdown untuk memilih posisi dalam form input.
- Tampilkan informasi level posisi bersama dengan nama posisi dalam dropdown.
- Sinkronisasi validasi dan nilai default sesuai dengan pengaturan posisi.
- Perbaikan minor pada query pencarian data roles, menggunakan `whereRaw` untuk pencarian case-insensitive.
- 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`.
- 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.
- Hapus beberapa entri yang tidak diperlukan dari PermissionGroupSeeder.
- Perbaiki indentasi dan struktur kode di UsersSeeder.
- Pastikan semua entri pengguna memiliki atribut yang konsisten.
- Memperbaiki import model Branch dari Modules\Basicdata\Models\Branch.
- Menambahkan kolom 'nik' yang nullable setelah kolom 'email'.
- Menambahkan foreign key untuk 'branch_id' yang nullable setelah kolom 'nik'.
- Memperbaiki metode up dan down untuk migrasi pengguna.
- Mengubah impor model Branch dari `Modules\Lpj\Models\Branch` menjadi `Modules\Basicdata\Models\Branch`.
- Perubahan ini memastikan file menggunakan namespace yang benar agar sesuai dengan struktur modul yang telah diperbarui.
- Menambahkan kelas "text-primary" pada ikon menu User Management di file `module.json`. Perubahan ini bertujuan untuk meningkatkan konsistensi warna dan tata letak ikon pada aplikasi. Tidak ada perubahan logika atau fungsi lainnya yang terpengaruh.
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.
Added a conditional check to handle cases where the user is undefined when rendering role input fields. This ensures that the role selection logic works correctly for both new user creation and existing user updates.
Replaced Auth user roles check with the roles of the user being created. This ensures the correct role is pre-selected based on the user’s roles, rather than the creator's roles.
- Fix Form Validation for Check Password, if null password not changed
- Update Validation NIK on Update user data
- Fix Role Not Assign if value is id not role name
- Change User Migration, change password field to nullable