# User Management System Sistem manajemen pengguna untuk aplikasi Perling dengan fitur CRUD lengkap dan integrasi role-based access control. ## 🚀 Fitur ### ✅ Manajemen Pengguna - **View (Index)**: Daftar semua pengguna dengan pagination - **Create**: Tambah pengguna baru dengan role assignment - **Show**: Detail lengkap pengguna termasuk role dan permissions - **Edit**: Update informasi pengguna dan role - **Delete**: Hapus pengguna (dengan proteksi untuk user yang sedang login) ### 🔐 Keamanan - Password validation dengan requirements yang kuat - Role-based access control menggunakan Spatie Laravel Permission - Proteksi CSRF untuk semua form - Validasi unique untuk email dan username - Proteksi penghapusan akun sendiri ## 📋 Endpoints | Method | Route | Action | Permission Required | | ------ | -------------------------- | -------------------- | ------------------- | | GET | `/admin/users` | Daftar pengguna | `settings.manage` | | GET | `/admin/users/create` | Form tambah pengguna | `settings.manage` | | POST | `/admin/users` | Simpan pengguna baru | `settings.manage` | | GET | `/admin/users/{user}` | Detail pengguna | `settings.manage` | | GET | `/admin/users/{user}/edit` | Form edit pengguna | `settings.manage` | | PUT | `/admin/users/{user}` | Update pengguna | `settings.manage` | | DELETE | `/admin/users/{user}` | Hapus pengguna | `settings.manage` | ## 🎯 Validasi ### Create User ```php 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users', 'username' => 'required|string|unique:users', 'password' => 'required|min:8|confirmed|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/', 'roles' => 'array|exists:roles,name' ``` ### Update User ```php 'name' => 'required|string|max:255', 'email' => 'required|email|unique:users,email,{user_id}', 'username' => 'required|string|unique:users,username,{user_id}', 'password' => 'nullable|min:8|confirmed|regex:/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^A-Za-z0-9]).{8,}$/', 'roles' => 'array|exists:roles,name' ``` ## 🗂️ File Structure ``` app/Http/Controllers/Admin/ └── UserController.php # Controller utama resources/views/admin/users/ ├── index.blade.php # Daftar pengguna ├── create.blade.php # Form tambah pengguna ├── edit.blade.php # Form edit pengguna └── show.blade.php # Detail pengguna resources/views/layouts/ └── app.blade.php # Layout utama database/seeders/ └── UserManagementSeeder.php # Seeder untuk data awal ``` ## 🎨 UI Components ### Index Page - Tabel responsif dengan pagination - Badge untuk menampilkan role - Action buttons (View, Edit, Delete) - Modal konfirmasi untuk delete - Alert untuk feedback ### Create/Edit Forms - Form validation dengan error display - Password strength requirements - Role selection dengan checkbox - Responsive layout (2 kolom) ### Show Page - Informasi lengkap pengguna - Role dan permissions display - Activity summary cards - Action buttons ## 🔧 Setup & Installation ### 1. Run Migrations ```bash php artisan migrate ``` ### 2. Run Seeders ```bash php artisan db:seed ``` ### 3. Default Users Sistem sudah memiliki user default dari UserSeeder: - **ammar@dinaslhdki.id** (role: DLH) - Super admin dengan akses penuh - **kadis@dinaslhdki.id** (role: Kadis) - Management level access - **ppkl@dinaslhkdki.id** (role: PPKL) - Operational level access Password sesuai dengan yang sudah dikonfigurasi di UserSeeder. ## 🚀 Usage Examples ### Akses User Management 1. Login sebagai user dengan role DLH (ammar@dinaslhdki.id) 2. Klik menu "Pengaturan" → "Manajemen Pengguna" 3. Atau akses langsung: `/admin/users` ### Tambah User Baru 1. Klik tombol "Tambah Pengguna" 2. Isi form dengan data lengkap 3. Pilih role yang sesuai 4. Klik "Simpan" ### Edit User 1. Dari daftar user, klik tombol "Edit" (ikon pensil) 2. Update informasi yang diperlukan 3. Password bisa dikosongkan jika tidak ingin diubah 4. Klik "Perbarui" ### Hapus User 1. Klik tombol "Hapus" (ikon trash) 2. Konfirmasi di modal yang muncul 3. User akan dihapus permanent ## 🔒 Security Features ### Password Requirements - Minimal 8 karakter - Harus mengandung huruf besar - Harus mengandung huruf kecil - Harus mengandung angka - Harus mengandung simbol khusus ### Access Control - Hanya user dengan permission `settings.manage` yang bisa akses - User tidak bisa menghapus akun sendiri - CSRF protection pada semua form - Input validation dan sanitization ### Role Management - Role assignment saat create/edit user - Multiple role support - Permission inheritance dari role - Real-time role sync ## 🐛 Troubleshooting ### Common Issues **Permission Denied** - Pastikan user memiliki permission `settings.manage` - Check role assignment di database **Validation Errors** - Email/username sudah digunakan - Password tidak memenuhi requirements - Role tidak valid **Layout Issues** - Pastikan Bootstrap CSS/JS ter-load - Check Lucide icons script - Verify Vite assets compiled ### Debug Commands ```bash # Check user permissions php artisan tinker >>> $user = User::find(1); >>> $user->getAllPermissions(); # Reset permissions php artisan permission:cache-reset # Re-run seeders php artisan db:seed --class=UserManagementSeeder ``` ## 📈 Future Enhancements - [ ] Bulk user operations - [ ] User import/export - [ ] Advanced filtering dan search - [ ] User activity logging - [ ] Email verification workflow - [ ] Password reset functionality - [ ] User profile pictures - [ ] Two-factor authentication