Files
free-crm/Presentation/ASPNET/FrontEnd/Pages/Accounts/ForgotPasswordConfirmation.cshtml.js
T
2026-07-21 15:36:49 +07:00

72 lines
2.6 KiB
JavaScript
Vendored

const App = {
setup() {
const state = Vue.reactive({
isSubmitting: false,
});
const forgotPasswordConfirmation = async (email, code, tempPassword) => {
try {
const response = await AxiosManager.get(`/Security/ForgotPasswordConfirmation?email=${email}&code=${code}&tempPassword=${tempPassword}`, {});
return response;
} catch (error) {
console.error('Error during ForgotPasswordConfirmation:', error);
throw error;
}
}
Vue.onMounted(async () => {
try {
state.isSubmitting = true;
await new Promise(resolve => setTimeout(resolve, 300));
const params = new URLSearchParams(window.location.search);
const email = params.get('email');
const code = params.get('code');
const tempPassword = params.get('tempPassword');
if (email && code && tempPassword) {
const response = await forgotPasswordConfirmation(email, code, tempPassword);
if (response.data.code === 200) {
Swal.fire({
icon: 'success',
title: 'Password Reset Successful',
text: 'You are being redirected...',
timer: 2000,
showConfirmButton: false
});
setTimeout(() => {
window.location.href = '/Accounts/Login';
}, 2000);
} else {
Swal.fire({
icon: 'error',
title: 'Password Reset Failed',
text: response.data.message ?? 'Please check your data.',
confirmButtonText: 'Try Again'
});
}
} else {
Swal.fire({
icon: 'error',
title: 'Password Reset Failed',
text: 'Email or code is missing in the URL query string.',
confirmButtonText: 'Try Again'
});
}
} catch (e) {
console.error('page init error:', e);
} finally {
state.isSubmitting = false;
}
});
return {
state
};
}
};
Vue.createApp(App).mount('#app');