perling/docs/user-management.md

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:

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

# 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