File size: 2,494 Bytes
e4fd6e0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | (function () {
function initProfilePage() {
var openButton = document.querySelector('.js-open-password-modal');
var closeButtons = document.querySelectorAll('.js-close-password-modal');
var modal = document.querySelector('.js-password-modal');
var form = document.getElementById('changePasswordForm');
var message = document.getElementById('passwordMessage');
if (!openButton || !closeButtons.length || !modal || !form || !message) {
return;
}
function openModal() {
modal.style.display = 'block';
form.reset();
message.innerHTML = '';
}
function closeModal() {
modal.style.display = 'none';
}
openButton.addEventListener('click', openModal);
closeButtons.forEach(function (button) {
button.addEventListener('click', closeModal);
});
document.addEventListener('click', function (event) {
if (event.target === modal) {
closeModal();
}
});
form.addEventListener('submit', async function (event) {
event.preventDefault();
var currentPassword = document.getElementById('currentPassword').value;
var newPassword = document.getElementById('newPassword').value;
var confirmPassword = document.getElementById('confirmPassword').value;
var endpoint = form.dataset.changePasswordUrl;
if (newPassword !== confirmPassword) {
message.innerHTML = '<div class="alert alert-error">Passwords do not match</div>';
return;
}
try {
var response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
current_password: currentPassword,
new_password: newPassword,
confirm_password: confirmPassword
})
});
var data = await response.json();
if (response.ok) {
message.innerHTML = '<div class="alert alert-success">' + data.message + '</div>';
setTimeout(closeModal, 2000);
} else {
message.innerHTML = '<div class="alert alert-error">' + (data.error || 'Unable to update password') + '</div>';
}
} catch (error) {
message.innerHTML = '<div class="alert alert-error">An error occurred</div>';
}
});
}
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', initProfilePage);
} else {
initProfilePage();
}
})();
|