septian_airpanaswebsite/flowcharts/user-profile-flowchart.md

234 lines
5.2 KiB
Markdown

# Flowchart - Fitur Profil User
## Daftar Isi
1. [Lihat Profil User](#1-lihat-profil-user)
2. [Edit Profil User](#2-edit-profil-user)
3. [Ubah Password User](#3-ubah-password-user)
---
## 1. Lihat Profil User
### Deskripsi
Flowchart untuk user melihat profil sendiri.
### Flowchart
```
START
{User sudah login?}
├─ NO → [Redirect ke halaman login] → END
└─ YES ↓
{User adalah admin?}
├─ YES → [Redirect ke profil admin] → END
└─ NO ↓
[User klik menu "Profil Saya" di dropdown navbar]
[Query database: users]
[Filter: id = user yang login]
{User ditemukan?}
├─ NO → [Error: User tidak ditemukan] → [Logout] → END
└─ YES ↓
[Tampilkan halaman profil]
[Tampilkan informasi user:]
- Nama
- Email
- Nomor Telepon
- Alamat
- Tanggal Bergabung
[Tampilkan tombol "Edit Profil"]
END
```
---
## 2. Edit Profil User
### Deskripsi
Flowchart untuk user mengedit profil sendiri.
### Flowchart
```
START
[User di halaman profil]
[User klik tombol "Edit Profil"]
[Tampilkan form edit profil dengan data user:]
- Nama (terisi)
- Email (terisi)
- Nomor Telepon (terisi/kosong)
- Alamat (terisi/kosong)
[User mengubah data]
[User klik tombol "Update Profil"]
<Validasi input>
{Nama terisi?}
├─ NO → [Error: "Nama wajib diisi"] → [Kembali ke form] → END
└─ YES ↓
{Format email valid?}
├─ NO → [Error: "Format email tidak valid"] → [Kembali ke form] → END
└─ YES ↓
[Query database: cek email sudah digunakan user lain]
{Email digunakan user lain?}
├─ YES → [Error: "Email sudah terdaftar"] → [Kembali ke form] → END
└─ NO ↓
{Nomor telepon diisi?}
├─ YES → {Format nomor telepon valid?}
│ ├─ NO → [Error: "Format nomor telepon tidak valid"] → [Kembali ke form] → END
│ └─ YES → [Lanjut]
└─ NO → [Lanjut]
[Update tabel users:]
- name
- email
- phone (jika diisi)
- address (jika diisi)
[Simpan perubahan ke database]
[Update session dengan data baru]
[Tampilkan notifikasi sukses:]
"Profil berhasil diupdate"
[Refresh halaman profil]
END
```
---
## 3. Ubah Password User
### Deskripsi
Flowchart untuk user mengubah password sendiri.
### Flowchart
```
START
[User di halaman profil]
[User klik tombol "Ubah Password"]
[Tampilkan form ubah password:]
- Password Lama
- Password Baru
- Konfirmasi Password Baru
[User mengisi form]
[User klik tombol "Update Password"]
<Validasi input>
{Password lama terisi?}
├─ NO → [Error: "Password lama wajib diisi"] → [Kembali ke form] → END
└─ YES ↓
[Query database: ambil user yang login]
[Verifikasi password lama dengan hash]
{Password lama cocok?}
├─ NO → [Error: "Password lama salah"] → [Kembali ke form] → END
└─ YES ↓
{Password baru terisi?}
├─ NO → [Error: "Password baru wajib diisi"] → [Kembali ke form] → END
└─ YES ↓
{Password baru minimal 8 karakter?}
├─ NO → [Error: "Password minimal 8 karakter"] → [Kembali ke form] → END
└─ YES ↓
{Password baru = Konfirmasi Password?}
├─ NO → [Error: "Konfirmasi password tidak cocok"] → [Kembali ke form] → END
└─ YES ↓
{Password baru berbeda dari password lama?}
├─ NO → [Error: "Password baru harus berbeda dari password lama"]
│ ↓
│ [Kembali ke form]
│ ↓
│ END
└─ YES ↓
[Hash password baru menggunakan bcrypt]
[Update tabel users:]
- password = password baru (hashed)
[Simpan perubahan ke database]
[Tampilkan notifikasi sukses:]
"Password berhasil diubah"
[Redirect ke halaman profil]
END
```
---
## Panduan Membuat di Draw.io
### Simbol Flowchart
1. **Terminator** (Oval) - START/END
2. **Process** (Rectangle) - Proses/aksi
3. **Decision** (Diamond) - Kondisi/percabangan
4. **Data** (Parallelogram) - Input/Output
5. **Database** (Cylinder) - Operasi database
6. **Document** (Rectangle with wavy bottom) - Form
7. **Manual Input** (Parallelogram with slanted top) - Input user
### Warna yang Disarankan
- **START/END**: Hijau teal (#14B8A6)
- **Process**: Biru muda (#E3F2FD)
- **Decision**: Kuning (#FFF59D)
- **Database Operation**: Ungu muda (#E1BEE7)
- **Form**: Biru tua muda (#BBDEFB)
- **Update**: Biru muda (#B3E5FC)
- **Security Check**: Oranye muda (#FFE0B2)
- **Success**: Hijau muda (#C8E6C9)
- **Error**: Merah muda (#FFCDD2)
### Tips
- Gunakan swimlane untuk memisahkan User dan System
- Tandai proses security check (password verification) dengan warna khusus
- Gunakan connector yang jelas untuk decision branch
- Tambahkan notes untuk validasi password
- Highlight proses hashing password
### Security Notes
- Password lama harus diverifikasi sebelum mengubah password
- Password baru harus di-hash menggunakan bcrypt
- Password baru harus berbeda dari password lama
- Session harus diupdate setelah perubahan data
---
**Dibuat**: 25 Februari 2026
**Fitur**: Profil User
**Sistem**: Banyu Biru Ticketing & Booking System