카테고리 없음

TIL :: 비밀번호 변경하기 / 기술 면접 준비

두캔두잇 2023. 8. 21. 23:23

유저가 홈페이지에서 마이페이지로 들어간 다음 비밀번호를 변경할 수 있는 로직을 구성하였다.

우선 첫 번째로 기존 비밀번호를 변경하기전에 변경하기 전에 기본 패스워드가 일치하는지 안하는지를 확인해 볼 필요가 있다. 로직을 차례대로 보자면,

// 비밀번호 변경
async changePassword(memberId: number, password: string, confirmPassword: string): Promise<IMessage> {
  const member = await this.mypageRepository.findOne({ where: { id: memberId } });
  if (!member) {
    throw new NotFoundException('회원이 존재하지 않습니다.');
  }

  const oldPassword = await bcrypt.compare(password, member.password);
  if (!oldPassword) {
    throw new NotFoundException('기존 비밀번호가 올바르지 않습니다.');
  }
  const newPassword = await bcrypt.hash(confirmPassword, 10);
  member.password = newPassword;
  await this.mypageRepository.save(member);
  return { message: '비밀번호가 변경되었습니다.' };
}

1. 우선 회원이 존재하는지 유무 확인할 것.

회원이 존재하지 않는다면 수정조차 이뤄지지 않는 과정이기에 회원이 존재하는지 유무를 먼저 알아볼 필요가 있다.

 

2. 변경할때 기존 패스워드가 동일 한지 확인할 것.

바꾸기 전에 기존 패스워드가 일치하는지 복호화를 통해 구현하였다. compare 

 

3. 그 후에 패스워드를 변경 할 수 있게 로직을 구현.

유저가 작성하는 패스워드를 새로운 패스워드의 변수값으로 담고 저장을 했다.

 

 

## 코드를 작성하면서 느낀 점 ##

이번에 프로젝트를 진행하면서 실제서비스 처럼 구현하려고 하다보니 생각보다 엄청 많은 유효성검증과, 정규식 등이 필요하다는것을 알았다. 그래서 팀원분들과 공유를 하면서 코드를 설명하고 어떤 생각을 가지고 이렇게 했는지 말하는 것이 좋은것 같다. 그래야 다른 사람이 봤을때 필요한 유효성검증이 있을수도 있고 빠른 피드백을 통해 추가할 수 있기 때문에 추후에도 많은 소통이 중요한 것 같다.

 

# 기술 면접 준비

-  HTTP 메서드 -

1. http 프로토콜은 TCP와 UDP 프로토콜을 기반으로 하여 웹에서 사용하는 프로토콜으로서 클라이언트와 서버 사이에 이루어지는 요청(req)과 응답(res) 데이터를 전송하는 방식을 말한다.

< 한 마디로 서버에 요청을 보내는 방법이다 >

 

2. HTTP 메서드의 종류도 다양한데 흔히 우리가 알고 있는 GET / POST / PUT / DELETE 가 있고,

추가적으로는 OPTIONS / HEAD / TRACE / CONNECT  가 있다. 

 

3. PUT vs PATCH

patch는 정보의 일부분이 변경되는 방법이고, put은 지정한 데이터를 전부 수정하는 메서드다.