222 lines
5.8 KiB
Markdown
222 lines
5.8 KiB
Markdown
# 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
|