function changePassword() {
const password = document.getElementById('nowPassword').value;
const updatePassword = document.getElementById('updatePassword').value;
const checkPassword = document.getElementById('updatePasswordCheck').value;
// 비밀번호 조건 검증
if (!validatePassword(updatePassword)) {
alert('비밀번호는 10자 이상 15자 이하이며, 영문, 숫자, 특수문자를 하나 이상 포함해야 합니다.');
return;
}
$.ajax({
url: '/checkPassword',
data: {
password: password,
},
type: 'post',
success: function(result) {
if (result === 'true') {
updateUserPassword(updatePassword, checkPassword);
} else {
alert('잘못된 비밀번호입니다.');
}
},
error: function(err) {
console.log(err);
}
});
}
function updateUserPassword(password, passwordCheck) {
if (password !== passwordCheck) {
alert('변경 비밀번호와 비밀번호 확인 값이 다릅니다.');
} else {
$.ajax({
url: '/updatePassword',
type: 'post',
data: {
password: password
},
success: function(result) {
if (result === 'success') {
alert('비밀번호가 변경되었습니다.');
} else {
alert('비밀번호 변경에 실패했습니다. 다시 시도해주세요.');
}
},
error: function(err) {
console.log(err);
alert('오류가 발생했습니다. 다시 시도해주세요.');
}
});
}
}
function validatePassword(password) {
const regex = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{10,15}$/;
return regex.test(password);
}
비밀번호 찾기 기능을 구현하는 중
기능을 성공적으로 잘되었지만 찝찝한 마음이 있었다.
암호화 처리는 완벽했다고 생각을 했지만
회원가입 때 사용했던 비밀정책과는 맞지 않는 방식이었다
내가 생각한 비밀번호 정책은 10자 이상15자이상과 특수문자 및 숫자, 영문을 1자라도 포함한
비밀번호 정책이었지만 먼저 만들어둔 코드에는 그러한 조건이 없었다 즉
숫자 1이라고 입력을 하고 입력된 비밀번호와 체크된 비밀번호 값이 맞으면
비밀번호가 변경이 되는 거였다.
내가 이러한 과정을 겪으면서 느낀 점은
급한 마음을 가진 시기일 수록 다시 한 번 생각을 해보고
여유를 갖는 것이 오히려 시간을 단축하는 일이겠구나 싶었다