User Registration — Central Membership & SSO Hub
1. Tujuan Dokumen
Dokumen ini menjelaskan spesifikasi fitur registrasi dan manajemen akun member, mulai dari pendaftaran pertama hingga pengelolaan profil.
2. Alur Registrasi
2.1 Langkah Registrasi
- Member membuka halaman Daftar di Membership Hub.
- Member mengisi formulir registrasi.
- Sistem memvalidasi data.
- Sistem membuat akun dengan status
unverified.
- Sistem mengirim email verifikasi.
- Member mengklik tautan di email.
- Sistem mengaktifkan akun ke status
active.
- Member diarahkan ke halaman dashboard atau pilih paket.
3. Formulir Registrasi
3.1 Field yang Diperlukan
| Field |
Tipe |
Wajib |
Aturan Validasi |
| Nama Lengkap |
Text |
Ya |
Min 2 karakter, max 100 karakter |
| Email |
Email |
Ya |
Format valid, unik di sistem, dinormalisasi lowercase |
| Kata Sandi |
Password |
Ya |
Min 8 karakter, kombinasi huruf dan angka |
| Konfirmasi Kata Sandi |
Password |
Ya |
Harus sama dengan kata sandi |
3.2 Field Opsional
| Field |
Tipe |
Keterangan |
| Nomor Telepon |
Text |
Untuk keperluan komunikasi |
4. Aturan Validasi
4.1 Email
- Harus berformat email yang valid.
- Dinormalisasi menjadi huruf kecil (lowercase) dan ditrim sebelum disimpan.
" Budi@Email.COM " → "budi@email.com"
- Harus unik; tidak boleh ada dua akun dengan email yang sama.
- Validasi dilakukan di frontend (UX) dan backend (keamanan).
4.2 Kata Sandi
- Minimal 8 karakter.
- Harus mengandung minimal satu huruf dan satu angka.
- Tidak boleh sama persis dengan email.
- Disimpan dalam bentuk hash menggunakan bcrypt atau Argon2 (tidak pernah plaintext).
- Tidak pernah dikirim kembali ke client dalam bentuk apapun.
4.3 Nama Lengkap
- Minimal 2 karakter.
- Ditrim spasi di awal dan akhir.
- Tidak boleh hanya berisi spasi atau karakter khusus.
5. Status Akun
| Status |
Kode |
Keterangan |
| Belum Diverifikasi |
unverified |
Baru daftar, email belum dikonfirmasi |
| Aktif |
active |
Email sudah diverifikasi, dapat login |
| Ditangguhkan |
suspended |
Dinonaktifkan oleh Super Admin |
Perpindahan status:
[unverified] → (klik tautan verifikasi) → [active]
[active] → (dinonaktifkan admin) → [suspended]
[suspended] → (dipulihkan admin) → [active]
6. Verifikasi Email
6.1 Mekanisme
6.2 Saat Member Mengklik Tautan
- Sistem memvalidasi token: ada, belum digunakan, belum expired.
- Jika valid: akun diubah ke
active, token ditandai sudah digunakan.
- Jika expired: tampilkan halaman untuk kirim ulang email.
- Jika sudah digunakan: tampilkan pesan "Akun sudah aktif, silakan login."
6.3 Kirim Ulang Email Verifikasi
- Member dapat meminta kirim ulang selama akun masih
unverified.
- Sistem membuat token baru dan mengirim email baru.
- Token lama otomatis tidak berlaku setelah token baru dibuat.
- Dibatasi maksimal: misal 3x kirim ulang per jam (rate limiting).
7. Lupa Kata Sandi
7.1 Alur
- Member membuka halaman Lupa Kata Sandi.
- Member memasukkan email.
- Sistem mencari akun dengan email tersebut (dinormalisasi).
- Jika akun ditemukan: kirim email berisi tautan reset kata sandi.
- Jika akun tidak ditemukan: tampilkan pesan generik (tidak mengkonfirmasi ada/tidaknya email).
- Member mengklik tautan di email.
- Member memasukkan kata sandi baru.
- Sistem memvalidasi kata sandi baru.
- Sistem menyimpan hash kata sandi baru.
- Semua sesi aktif lainnya diakhiri.
- Member diarahkan ke halaman login.
7.2 Aturan Token Reset
- Token reset kata sandi bersifat one-time use.
- Masa berlaku: 1 jam.
- Token baru membatalkan token lama yang belum digunakan.
8. Mengubah Kata Sandi (dari Profil)
8.1 Alur
- Member membuka halaman Pengaturan Akun.
- Member mengisi:
- kata sandi saat ini,
- kata sandi baru,
- konfirmasi kata sandi baru.
- Sistem memvalidasi kata sandi saat ini.
- Sistem memvalidasi kata sandi baru (aturan sama dengan registrasi).
- Sistem menyimpan hash kata sandi baru.
- Semua sesi aktif di perangkat lain diakhiri (kecuali sesi saat ini).
- Sistem mengirim email notifikasi perubahan kata sandi.
9. Mengubah Email
9.1 Alur
- Member membuka halaman Pengaturan Akun.
- Member memasukkan email baru.
- Sistem memvalidasi:
- format email baru,
- email baru berbeda dari email saat ini,
- email baru belum digunakan akun lain.
- Sistem mengirim email verifikasi ke email baru.
- Email lama tetap digunakan hingga verifikasi selesai.
- Member mengklik tautan di email baru.
- Sistem memperbarui email ke email baru.
- Sistem mengirim notifikasi ke email lama.
10. Manajemen Profil
10.1 Informasi Profil
| Field |
Dapat Diubah? |
Keterangan |
| Nama Lengkap |
Ya |
— |
| Email |
Ya |
Memerlukan verifikasi ulang |
| Nomor Telepon |
Ya |
— |
| Foto Profil |
Ya |
Upload gambar, optional |
| Kata Sandi |
Ya |
Melalui alur khusus |
| ID Member |
Tidak |
Digenerate sistem, tidak dapat diubah |
| Tanggal Daftar |
Tidak |
Dicatat sistem |
10.2 Foto Profil
- Format yang diterima: JPG, PNG, WebP.
- Ukuran maksimal: 2 MB.
- Gambar dikompresi dan diresize oleh sistem.
- Jika tidak ada foto, tampilkan inisial nama sebagai avatar default.
11. Penghapusan Akun
Catatan: Fitur penghapusan akun akan didefinisikan lebih lanjut dalam versi selanjutnya.
Prinsip yang harus diperhatikan:
- Akun yang memiliki lisensi aktif berbayar tidak dapat langsung dihapus.
- Data transaksi keuangan harus disimpan sesuai peraturan yang berlaku.
- Penghapusan memerlukan konfirmasi kata sandi.
12. Data yang Disimpan Saat Registrasi
{
"id": "uuid-member-001",
"name": "Budi Santoso",
"email": "budi@email.com",
"email_verified": false,
"phone": null,
"password_hash": "$2b$12$...",
"status": "unverified",
"created_at": "2026-07-12T14:00:00Z",
"updated_at": "2026-07-12T14:00:00Z",
"last_login_at": null
}
13. Email yang Dikirim
| Peristiwa |
Email |
| Registrasi berhasil |
Tautan verifikasi email |
| Akun diaktifkan |
Selamat datang + tautan ke dashboard |
| Lupa kata sandi |
Tautan reset kata sandi |
| Kata sandi berhasil diubah |
Notifikasi perubahan kata sandi |
| Permintaan ubah email |
Tautan verifikasi email baru |
| Email berhasil diubah |
Notifikasi ke email lama |
14. Keamanan Akun
- Kata sandi disimpan sebagai hash (bcrypt/Argon2), tidak pernah plaintext.
- Token verifikasi dan reset bersifat satu kali pakai (one-time use).
- Rate limiting diterapkan pada:
- endpoint registrasi,
- endpoint login,
- endpoint lupa kata sandi,
- endpoint kirim ulang verifikasi.
- Perubahan kata sandi mengakhiri semua sesi aktif lain.
- Email perubahan sensitif (kata sandi, email) selalu dinotifikasi ke email sebelumnya.
15. Acceptance Criteria
- Member dapat mendaftar dengan email dan kata sandi yang valid.
- Email yang sudah terdaftar tidak dapat digunakan kembali.
- Email verifikasi terkirim setelah registrasi.
- Akun berstatus
unverified tidak dapat login ke aplikasi SaaS.
- Tautan verifikasi yang expired memunculkan opsi kirim ulang.
- Fitur lupa kata sandi tidak mengkonfirmasi apakah email terdaftar atau tidak.
- Token reset kata sandi expired setelah 1 jam dan satu kali pakai.
- Perubahan kata sandi mengakhiri sesi lain.
- Perubahan email memerlukan verifikasi ke email baru.
- Kata sandi tidak pernah tampil atau disimpan dalam bentuk teks asli.