73 lines
3.9 KiB
JavaScript
73 lines
3.9 KiB
JavaScript
async function verifyStudentOtp() {
|
|
const phone = document.getElementById('student_phone').value.trim();
|
|
const otp = document.getElementById('student_otp').value.trim();
|
|
if (!otp || otp.length < 4) {
|
|
showError('يرجى إدخال رمز تحقق صالح.');
|
|
return;
|
|
}
|
|
try {
|
|
const res = await fetch('/api/auth/otp/verify', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ phone_number: phone, phone: phone, otp: otp, otp_code: otp, role: 'student' })
|
|
});
|
|
const data = await res.json();
|
|
if (res.ok && data.status === 'success') {
|
|
if (data.data.requires_national_id) {
|
|
localStorage.setItem('saqel_student_identity_token', data.data.identity_token);
|
|
document.getElementById('step_otp_container').style.display = 'none';
|
|
document.getElementById('step_national_id_container').style.display = 'block';
|
|
document.getElementById('student_national_id_login').focus();
|
|
} else {
|
|
const token = data.data.token;
|
|
localStorage.setItem('saqel_student_jwt', token);
|
|
renderDashboard(data.data.user);
|
|
}
|
|
} else {
|
|
showError(data.message || 'رمز التحقق غير صحيح أو منتهي الصلاحية');
|
|
}
|
|
} catch (err) {
|
|
showError('حدث خطأ في الاتصال بالسيرفر.');
|
|
}
|
|
}
|
|
|
|
async function submitNationalId() {
|
|
const nationalId = document.getElementById('student_national_id_login').value.trim();
|
|
const identityToken = localStorage.getItem('saqel_student_identity_token');
|
|
|
|
if (!nationalId) {
|
|
showError('يرجى إدخال الرقم الوطني الخاص بك');
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const res = await fetch('/api/auth/student/login-national-id', {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ national_id: nationalId, identity_token: identityToken })
|
|
});
|
|
const data = await res.json();
|
|
|
|
if (res.ok && data.status === 'success') {
|
|
if (data.data && data.data.requires_onboarding) {
|
|
document.getElementById('step_national_id_container').style.display = 'none';
|
|
document.getElementById('step_onboarding_container').style.display = 'block';
|
|
document.getElementById('onboard_student_national_id').value = nationalId;
|
|
document.getElementById('onboard_student_national_id').disabled = true;
|
|
} else {
|
|
const token = data.data.token;
|
|
localStorage.setItem('saqel_student_jwt', token);
|
|
localStorage.setItem('saqel_student_user', JSON.stringify(data.data.user));
|
|
localStorage.removeItem('saqel_student_identity_token');
|
|
renderDashboard(data.data.user);
|
|
initWebSocket(token);
|
|
showLuxuryToast('أهلاً بك يا بطل! 🚀', 'تم تسجيل الدخول لملفك الخاص بنجاح.');
|
|
}
|
|
} else {
|
|
showError(data.message || 'خطأ في التحقق من الرقم الوطني');
|
|
}
|
|
} catch (err) {
|
|
showError('حدث خطأ في الاتصال بالخادم.');
|
|
}
|
|
}
|