Harshit Ghosh
feat: implement robust security middleware, authentication system, and frontend UI components
e4fd6e0
(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();
}
})();