- GET /mentors/{id}/stats (public, no auth)
- resolve mentor profile id -> user id in get_mentor_sessions (FK uses app_users.id)
2.2 KiB
2.2 KiB
Dimentorin — Catatan Temuan Infra (Dev Audit, 2026-08-04)
Dokumen ini mencatat temuan yang membutuhkan perhatian tim sebelum produksi.
Semua diuji lokal (Postgres dimentorin, backend :4099).
1. SMTP email verification broken (blocker aktivasi user baru)
- Endpoint
POST /v1/iam/auth/send-otpgagal:SMTP transport error (535): Username and Password not accepted— kredensial.env(SMTP_EMAIL=dev@example.com,SMTP_PASSWORD=dev) ditolak Google SMTP. POST /v1/iam/auth/verify-emailtetap butuh OTP untuk memanggil, tapi lihat poin 2.- Dampak: mentee/mentor baru tak bisa menerima OTP lewat email → tak bisa aktivasi → tak bisa login, kecuali via verify-email langsung.
- Diperlukan: SMTP credential institution yang valid (Gmail App Password atau SMTP relay), sebaiknya dari BWS secret management, bukan hardcode.
2. verify-email TIDAK memverifikasi OTP (security issue)
imphnen-iam/src/auth/application/mod.rs → verify_email():
async fn verify_email(&self, payload: VerifyEmailInput) -> ... {
let user = ...find_by_email...;
if user.is_active { return Err(...); }
self.user_repo.update(UserEntity { is_active: true, ..user }).await?;
Ok(())
}
- OTP di-generate (
OtpManager::generate_otp) + dikirim via email, TAPIpayload.otptidak pernah divalidasi. OtpManager::validate_otpada tapi tak dipanggil di handler ini.- Dampak: siapa pun yang tahu email bisa mengaktifkan akun dengan otp sembarang. Verifikasi email berbasis kepemilikan = tidak ada.
- Fix yang disarankan:
verify_emailharus menyimpanOtpData(hash+expiry) saat kirim, lalu memanggilOtpManager::validate_otp(stored, payload.otp)sebelum setis_active.
3. (OK, sudah benar) Register mentor + booking
POST /v1/dimentorin/mentors/create→ 200, user + mentor profile dibuat, statuspending, user tak tampil di list public sampai verified.POST /v1/dimentorin/mentors/{id}/sessions/create→ 200, session pending.- Kedua endpoint fungsional setelah fix UUID (commit
9b5efef).
Rekomendasi
Tangani #1 dan #2 sebelum go-live. #2 adalah kelas bug "OTP di-generate tapi tak dipakai" — sisi verifikasi email saat ini tidak lebih dari form "set is_active=true tanpa autentikasi".