43 Commits

Author SHA1 Message Date
664c793eff Merge pull request 'refactor(usermanagement): streamline UsersSeeder by utilizing RolesSeeder and improving user creation logic' (#1) from new_adk into master
Reviewed-on: #1
2025-10-31 16:56:12 +07:00
Sholahuddin Al Ayubi
a4aab54735 refactor(usermanagement): streamline UsersSeeder by utilizing RolesSeeder and improving user creation logic 2025-10-31 16:53:50 +07:00
c9bd6664f2 refactor(usermanagement): tidy up User model code structure and improve attribute casting 2025-10-03 09:07:42 +07:00
Daeng Deni Mardaeni
59721337a8 feat(ui): Perbaikan tampilan dan fungsionalitas halaman index untuk manajemen pengguna
- 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
v1.0.0
2025-08-20 09:41:52 +07:00
Daeng Deni Mardaeni
c348af2484 (usermanagement): tambah fitur export users dengan filter pencarian
- Modifikasi `UsersExport` untuk menerima parameter search
- Tambah filter whereAny (name, email) di `collection()`
- Tambah kolom "Roles" dengan mapping roles (pluck + implode)
- Null safety branch pakai optional chaining
- Update formatting kolom export
- Modifikasi `UsersController@export` untuk terima & teruskan search
- Batasi role berdasarkan role user login
- Konsistensikan pencarian di `index()` pakai whereAny
- Hapus validasi NIK di profile update
- Tambah ID pada tombol export di `index.blade.php`
- Tambah fungsi JS `updateExportUrl()` untuk sinkronisasi search
- Null safety render branch & role di DataTable
- Tambah listener untuk update URL export saat search
- Perbaiki formatting & indentasi kode
2025-08-15 08:35:06 +07:00
Daeng Deni Mardaeni
e3c7bf711c fix(usermanagement): perbaiki kondisi izin pada metode datatables di UsersController
- Mengubah kunci izin dari `usermanagement.view` menjadi `usermanagement.read` untuk konsistensi naming convention di seluruh sistem.
2025-06-22 21:31:55 +07:00
Daeng Deni Mardaeni
7cb2f798d0 refactor(usermanagement): gunakan middleware untuk autentikasi dan inisialisasi user di semua controller
- 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.
2025-06-22 20:52:51 +07:00
Daeng Deni Mardaeni
21521b384e feat(usermanagement): ubah respons abort menjadi JSON untuk akses terlarang di beberapa controller
- 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>
2025-06-22 18:56:06 +07:00
Daeng Deni Mardaeni
0a2add800e feat(usermanagement): perbarui seeders untuk grup permission & tambah slug izin restore
- **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>
2025-06-22 18:48:43 +07:00
Daeng Deni Mardaeni
fdbef3a5e8 feat(usermanagement): perbaiki otorisasi, tambah fitur ekspor, dan optimalkan logika pada beberapa controller
- **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>
2025-06-22 18:11:14 +07:00
Daeng Deni Mardaeni
becbf8aee2 feat(usermanagement): tambahkan helper untuk cek role and permission
- 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>
2025-06-22 10:59:30 +07:00
Daeng Deni Mardaeni
df2f91cc57 fix(models): ganti paket userstamps ke dependensi baru
- 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.
2025-06-05 16:54:02 +07:00
Daeng Deni Mardaeni
1968c14f68 feat(usermanagement): enhance user management features and implement automated tests
- 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.
2025-05-18 20:06:15 +07:00
Daeng Deni Mardaeni
1e958c9dd7 feat(permissions): implement permission management enhancements
- 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.
2025-05-18 18:23:06 +07:00
Daeng Deni Mardaeni
8bd31cf54f feat(roles): perbaikan logika, validasi, dan manajemen perizinan pada RolesController
- 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.
2025-05-18 17:47:40 +07:00
Daeng Deni Mardaeni
6fae6928e7 refactor(positions): perbaikan fungsi otorisasi, optimasi logika, dan penambahan pengujian
- 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.
2025-05-18 16:34:56 +07:00
Daeng Deni Mardaeni
a6c79c72b5 feat(roles): tambahkan fitur pengelolaan posisi dan tingkat jabatan pada modul 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.
2025-05-17 15:07:09 +07:00
Daeng Deni Mardaeni
e9fa45a808 feat(roles): tambah fitur relasi posisi pada role
- 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.
2025-05-17 14:12:48 +07:00
Daeng Deni Mardaeni
1007515faa feat(usermanagement): optimalkan pencarian dan tambahkan UserFactory
- 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`.
2025-05-17 14:12:25 +07:00
Daeng Deni Mardaeni
33fe30b443 feat(usermanagement): tambahkan fitur manajemen posisi
- 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.
2025-05-17 14:10:41 +07:00
Daeng Deni Mardaeni
63f2ac25c9 fix(seeder): perbarui data pada PermissionGroupSeeder dan UsersSeeder
- Hapus beberapa entri yang tidak diperlukan dari PermissionGroupSeeder.
- Perbaiki indentasi dan struktur kode di UsersSeeder.
- Pastikan semua entri pengguna memiliki atribut yang konsisten.
2025-04-27 12:26:22 +07:00
Daeng Deni Mardaeni
3d88868da1 fix(seeder): perbaiki email dan password pada UsersSeeder
- Ubah domain email dari '@lpj.id' menjadi '@ag.co.id'
- Ganti password default dari 'lpj' menjadi 'bagbag'
2025-01-15 09:38:20 +07:00
Daeng Deni Mardaeni
f7ae8ea294 fix(migration): perbaiki model Branch dan struktur migrasi pengguna
- 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.
2025-01-15 09:38:08 +07:00
Daeng Deni Mardaeni
b5c115a67e Perbaiki import model Branch di User.php
- 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.
2024-12-29 19:58:58 +07:00
Daeng Deni Mardaeni
c76630a5ea - Perbarui ikon warna pada menu User Management
- 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.
2024-12-22 16:16:27 +07:00
Daeng Deni Mardaeni
5678255090 Tambah fungsi update profil dan ganti password
Menambahkan fungsi update profil dan ganti password di UsersController. Menyesuaikan rute dan formulir di tampilan profil untuk mendukung fitur ini.
2024-11-17 12:48:52 +07:00
Daeng Deni Mardaeni
a2bff61998 Tambahkan kolom role di tabel pengguna
Mengubah query di UsersController untuk mengambil data roles. Memperbarui tampilan di users/index.blade.php untuk menampilkan kolom role dengan informasi yang sesuai.
2024-11-17 11:43:19 +07:00
Daeng Deni Mardaeni
f362bdd32f Tambah sorting dan perbaiki lokasi perhitungan total record
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.
2024-11-08 09:59:03 +07:00
Daeng Deni Mardaeni
a25194dc07 Handle undefined user scenario in role input
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.
2024-10-31 11:39:34 +07:00
Daeng Deni Mardaeni
b185a60b53 Fix role assignment check on user creation form
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.
2024-10-31 11:27:34 +07:00
Daeng Deni Mardaeni
849509b441 Penambahan Seeder
- Add Initial Permission Group
- Add Initial Role
- Add Initial Permission
- Add Initial Users
2024-10-27 15:44:29 +07:00
Daeng Deni Mardaeni
cbe8989e0e Fix Permossions 2024-10-03 11:48:03 +07:00
Daeng Deni Mardaeni
2850902c64 Update E-Sign 2024-09-19 14:49:13 +07:00
Daeng Deni Mardaeni
47f248c7b3 Update Module Users
- 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
2024-08-28 09:09:29 +07:00
Daeng Deni Mardaeni
18b8ed5344 Update Module User, Add Role Selection 2024-08-28 08:58:47 +07:00
Daeng Deni Mardaeni
d3baaa31c1 Update Module User
- Add Nik and branch,
2024-08-27 14:45:50 +07:00
Daeng Deni Mardaeni
18f0f68f1a Feature #2 : Role With Permission Selection 2024-08-10 21:08:03 +07:00
Daeng Deni Mardaeni
25db8db2f8 Fix Pagination 2024-08-08 22:47:50 +07:00
Daeng Deni Mardaeni
88b9a0aae3 Feature #1 : Permissions 2024-08-08 21:35:30 +07:00
Daeng Deni Mardaeni
1157ea79b9 remove Login Request and add middleware auth 2024-08-07 14:44:38 +07:00
Daeng Deni Mardaeni
30efa417c6 add type laravel-module 2024-08-07 11:36:30 +07:00
Daeng Deni Mardaeni
9d6eeb0b82 Update module name 2024-08-07 09:57:50 +07:00
Daeng Deni Mardaeni
225b326a5e Initial Commit 2024-08-07 08:47:07 +07:00