Fix registration invalid json bug and add password confirmation fields and validation

This commit is contained in:
ilham_gmail
2026-06-11 20:27:17 +07:00
parent 36e3e829ac
commit cbbd683470
+17 -1
View File
@@ -514,6 +514,7 @@ function openAuthModal(mode){
fields.innerHTML = '<div class="auth-field"><label><span class="label-title">Nama <span class="required-star">*</span></span><input name="name" type="text" required></label></div>'+
'<div class="auth-field"><label><span class="label-title">Email <span class="required-star">*</span></span><input name="email" type="email" required></label></div>'+
'<div class="auth-field"><label><span class="label-title">Password <span class="required-star">*</span></span><input name="password" type="password" required></label></div>'+
'<div class="auth-field"><label><span class="label-title">Konfirmasi Password <span class="required-star">*</span></span><input name="password_confirm" type="password" required></label></div>'+
'<div class="auth-field"><label><span class="label-title">Organisasi / Tempat Ibadah <span class="required-star">*</span></span><input name="organization" type="text" required></label></div>'+
'<div class="auth-field"><label><span class="label-title">Alamat Organisasi <span class="required-star">*</span></span><textarea name="org_address" required></textarea></label></div>'+
'<div class="auth-field"><label><span class="label-title">Nomor Telp Organisasi <span class="required-star">*</span></span><input name="org_phone" type="text" required></label></div>'+
@@ -575,6 +576,21 @@ function openAuthModal(mode){
try{
let resp, jr;
if(mode === 'register'){
// Validate password length and match
const passwordInput = form.querySelector('input[name="password"]');
const password = passwordInput ? passwordInput.value : '';
const passwordConfirmInput = form.querySelector('input[name="password_confirm"]');
const passwordConfirm = passwordConfirmInput ? passwordConfirmInput.value : '';
if(password.length < 8){
showToast('Password minimal harus 8 karakter', 'error', 5000);
return;
}
if(password !== passwordConfirm){
showToast('Konfirmasi password tidak cocok', 'error', 5000);
return;
}
// client-side validation for org_proof: size <=5MB and allowed extensions
const fileInput = form.querySelector('input[name="org_proof"]') || document.getElementById('org_proof_input');
if(!fileInput){ showToast('Input bukti organisasi tidak ditemukan', 'error', 4000); return; }
@@ -595,7 +611,7 @@ function openAuthModal(mode){
}
const fd = new FormData(form);
resp = await fetch(endpoint, { method: 'POST', headers: buildHeaders(), body: fd, credentials: 'same-origin' });
resp = await fetch(endpoint, { method: 'POST', headers: buildHeaders(null), body: fd, credentials: 'same-origin' });
jr = await resp.json().catch(()=>null);
} else {
const fd = new FormData(form);