Fitur pendaftaran pengguna baru (User Registration) membutuhkan validasi data input yang ketat pada layer backend sebelum data disimpan ke basis data. Anda diminta membuat logika endpoint REST API Express.js untuk:
POST /users/register
{
"email": "user@example.com",
"password": "Password123!",
"age": 20
}
{
"message": "User registered successfully",
"userId": "USR_101"
}
const registeredUsers = [
{ id: "USR_100", email: "existing@example.com", age: 25 }
];
email, password, atau age tidak diisi → HTTP 400 dengan pesan "Missing required registration fields".@ dan . → HTTP 400 dengan pesan "Invalid email format".HTTP 400 dengan pesan "Password does not meet complexity requirements".age >= 18) → HTTP 400 dengan pesan "User must be at least 18 years old".registeredUsers → HTTP 409 dengan pesan "Email already registered".registeredUsers dan kembalikan HTTP 201 dengan userId baru ("USR_" + Date.now()).Keamanan Password: Hashing & Salt Rounds Di bagian komentar kode solusi Anda, jelaskan:
- Mengapa password TIDAK BOLEH disimpan dalam bentuk plaintext di database.
- Perbedaan algoritma hashing Argon2 / bcrypt dibanding MD5/SHA-256.
- Peran Salt dan Cost Factor (Salt Rounds) dalam mencegah Rainbow Table Attack.