5.8 KiB
5.8 KiB
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
'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
'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
php artisan migrate
2. Run Seeders
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
- Login sebagai user dengan role DLH (ammar@dinaslhdki.id)
- Klik menu "Pengaturan" → "Manajemen Pengguna"
- Atau akses langsung:
/admin/users
Tambah User Baru
- Klik tombol "Tambah Pengguna"
- Isi form dengan data lengkap
- Pilih role yang sesuai
- Klik "Simpan"
Edit User
- Dari daftar user, klik tombol "Edit" (ikon pensil)
- Update informasi yang diperlukan
- Password bisa dikosongkan jika tidak ingin diubah
- Klik "Perbarui"
Hapus User
- Klik tombol "Hapus" (ikon trash)
- Konfirmasi di modal yang muncul
- 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
# 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