import { initOrgSelection, validateOrgSelection } from '../../shared/my_org';
import { isString } from '../../../utils/isType';
import { isValidPassword } from '../../../utils/isValidInputType';
import { addMatchingPasswordValidator, togglisePasswords } from '../../../utils/passwordHelper';
$(() => {
addMatchingPasswordValidator({ selector: '#password_details_registration_form' });
togglisePasswords({ selector: '#password_details_registration_form' });
initOrgSelection({ selector: '#org-controls' });
$('#personal_details_registration_form').on('submit', (e) => {
// Additional validation to force the user to choose an org or type something for other
if (!validateOrgSelection({ selector: '#personal_details_registration_form' })) {
e.preventDefault();
}
});
const sensitiveInfoCheck = (event) => {
const originalEmail = $('#original_email').val();
const originalOrg = $('#original_org').val();
const email = $('#personal_details_registration_form [name="user[email]"]').val();
const org = $('#personal_details_registration_form #user_org_id').val();
const pwd = $('#password-confirmation input[name="user[current_password]"]').val();
const orgConfirm = $('#confirm_org_change').is(':checked');
let display = false;
$('#email-change').addClass('hide');
$('#org-change').addClass('hide');
// If the Email has changed show the Password confirmation
if (isString(originalEmail) && isString(email)) {
if (originalEmail.toLowerCase() !== email.toLowerCase() && !isValidPassword(pwd)) {
$('#email-change').removeClass('hide');
display = true;
}
}
// If the orginalOrg is present and the selected Org has changed, show the confirmation box
if (isString(originalOrg) && isString(org)) {
if (originalOrg !== org && !orgConfirm) {
$('#org-change').removeClass('hide');
display = true;
}
}
if (display) {
event.preventDefault();
$('#password-confirmation').modal('show');
}
};
// If the user has changed their email address display the password
// confirmation modal on form submission
$('#personal_details_registration_form').submit((e) => {
sensitiveInfoCheck(e);
});
// Devise seems to require both the password and current_password so sync them
// when the user enters their password in the modal
$('#password-confirmation input[name="user[current_password]"]').change((e) => {
$('#password-confirmation input[name="user[password]"]')
.val($(e.target).val());
});
// Submit the form when the user clicks the confirmation button on the modal
$('#pwd-confirmation').click((e) => {
$(e.target).closest('form').submit();
});
});